asp.net NET将不可打印的条形码字符从web窗体传递到服务器端

o8x7eapl  于 2023-04-08  发布在  .NET
关注(0)|答案(1)|浏览(120)

我一直在开发一个接受条形码扫描仪输入的Web应用程序。我需要将扫描的条形码(GS1-128)从客户端传递到服务器端。根据标准,GS1-128可能包含一个或多个组分隔符(ASCII码29的字符)。因此,“12345”,“12345”是不同的输入。我有一个文本框和一个提交按钮来获取输入。由于某些原因,ASP.NET在回发中不包含不可打印的字符,在这两种情况下,我都收到了“12345”。
有没有办法克服这个问题?
P.S.当我使用WinForm(用于测试)时,一切都很好,我得到了字符,但对于ASP.NET,这不起作用。

w6lpcovy

w6lpcovy1#

经过一些挖掘,我发现大多数条形码扫描仪实际上会传输一系列按键,就像它们是来自键盘一样。当这种情况发生时,符号会以两个按键CTRL+]的形式传输,按键代码值分别为17和229。
由于它没有可打印的表示,我用于输入的Textbox简单地忽略了它。
我最后得到的是放置在文本框上的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);

到目前为止一切正常。不过我想知道有没有更好的方法来处理这个问题。

相关问题