2017-09-14 4 views
0

私はバーコードスキャナからの入力を受け付けるWebアプリケーションを開発しています。 スキャンされたバーコード(GS1-128)をクライアント側からサーバー側に渡す必要があります。 標準では、GS1-128には1つまたは複数のグループセパレータ<GS>文字(ASCIIコード29の文字)が含まれている場合があります。 したがって、 "123 <GS> 45"、 "12 <GS> 345"は異なる入力です。 私は入力を得るためにテキストボックスと送信ボタンを持っています。 何らかの理由で、ASP.NETにポストバックに印刷できない文字が含まれておらず、どちらの場合でも "12345"が表示されます。ASP.NET web.formからサーバー側に印刷できないバーコード文字を受け取ります

この問題を解決する方法はありますか?

P.S.私はWinForm(テスト用)を使用しているときにすべてが正常で、私は文字を取得しますが、ASP.NETではこれは動作しません。

+0

ASP.NETではなくブラウザの制限のようです。見てみましょうhttps://stackoverflow.com/questions/10005451/scanning-a-barcode-with-an-ascii-control-character-into-an-input-field –

答えて

0

私は、ほとんどのバーコードスキャナが実際にキーボードのように一連のキーストロークを送信していることを知った。 <GS>シンボルは、対応するキーコード値17と229の2つのキーストロークCTRL +]として送信されます。

印刷可能な表現がないため、入力用に使用していたテキストボックスでは無視されました。

最後に、このkeyDownイベントハンドラがテキストボックスに配置されました。 '^]'を '|'で置き換えるだけです。サーバー側では

<script type="text/javascript"> 
     var ctrlReceived = false; 
     function handleStroke(event) { 
      if (ctrlReceived && 221 == event.keyCode) 
       document.getElementById('txtScanBoxBarcode').value += '|'; 
      ctrlReceived = (17 == event.keyCode); 
      return null; 
     }; 
    </script> 

私は単にそれをバックに変更:

string barcode = this.txtScanBoxBarcode.Text.Replace('|', (char)29); 

すべてがこれまでに動作します。私はそこに問題を処理するより良い方法があるのだろうかと思います。

関連する問題