ASP.NET从Web.form传递不可打印条形码字符到服务器端



我一直在开发一个接受条形码扫描仪输入的Web应用程序。我需要将扫描的条形码(GS1-128)从客户端转到服务器端。按标准,GS1-128可能包含一个或几个组分离器ut< gs>字符(带有ASCII代码29的字符)。因此," 123< gs> 45"," 12< gs> 345"是不同的输入。我有一个文本框和一个提交按钮来获取输入。由于某种原因,ASP.NET不包含寄回中的不可打印字符,在这两种情况下,我都会收到" 12345"。

有什么方法可以克服这个问题?

P.S。当我使用winform(用于测试)时,一切都还好,我会得到角色,但是使用ASP.NET,这不起作用。

在挖掘后,我发现大多数条形码扫描仪实际上会传输一系列击键,就好像它们来自键盘一样。发生这种情况,< gs>符号以17和229相应的密钥编码值为两个击键ctrl ]。

由于它没有可打印的表示,所以我用于输入的文本框只是忽略了它。

我最终发现的是放置在文本框上的键盘事件处理程序。它只是用'|'。

代替'^]'
    <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);

到目前为止,一切都起作用。我想知道是否有更好的方法来解决问题。

相关内容

  • 没有找到相关文章

最新更新