2015-12-29 30 views
0

我有一个扫描器,它在扫描条形码时调用JavaScript函数。在这个函数中,我试图将条形码值传递给我可以在后面的C#代码中使用的某种变量。我试过这个:将Javascript值传递到C#代码后面(扫描)

document.getElementById("hidden").value = data; 
alert(document.getElementById("hidden").value); 

这会扫描条形码值并发出警报。在后面的代码中,我正在寻找这样的东西:

protected void hidden_ValueChanged(object sender, EventArgs e) 
{ 
//magic wizard man stuff going on 
} 

这似乎并没有触发。有任何想法吗?

(基本上我想要的值即可传递到C#代码隐藏,所以我可以做的东西与它)

+0

据我知道,我敢肯定,你需要你在这种情况下使用Ajax是因为您无法在客户端和服务器端之间传递某些内容,而无需向服务器发送http请求。 – dtmnn

+0

'__doPostBack('hiddenfieldid',参数)'在更改hiddenfield的值后尝试此操作。 –

+0

你有没有试过把你的隐藏领域运行在服务器? –

回答

0

你最终必须做回发,但如果您没有问题创建一个按钮,并从点击您的JavaScript代码,这可能是一个更简单的解决方案。

0

附上事件的隐藏字段这样

<asp:hiddenfield id="hidden" 
       onvaluechanged="hidden_ValueChanged" 
       value="" 
       runat="server"/> 

MSDN source

0

为了达到这个目的,你可以使用,页面方法。另一个备选是使用jquery,这样(只是一个代码片段):

$.ajax({ 
      type: "POST", 
      url: "WebForm.aspx/CodeBehindMethod", 
      data: "{<your scanner id>}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      async: true, 
      cache: false, 
success: function (msg) 
     { 
         //any div or label you want to update 
       } 
       }) 

而且在后面的代码:

[WebMethod] 
public static string CodeBehindMethod(string Id) 
{ 
    //whatever you want to do with the Id 
    return Id; 
} 
相关问题