将Javascript值传递给C#Code Behind

时间:2014-04-08 13:52:33

标签: c# javascript jquery html asp.net

我把自己写成了一个角落,我遇到的建议似乎没有帮助。

总结:我有一个模式,它从加载事件的页面接收一个序列化变量,通过一个javascript函数传递,该函数是从aspx页面上的div模板构建的。问题是模板中有一个ASP:LinkBut​​ton,它调用C#中的onclick事件。我需要能够将我在模式中访问的一些信息传递给C#中的onclick函数。

我尝试过使用隐藏变量,但我似乎无法让它们在onclick上的Javascript中进行更改。

这是链接和隐藏字段,全部在内容模板中(我有两个,asp和html,一直在尝试):

<asp:LinkButton ID="lnkbtnProceedChangeStatus" runat="server" OnClick="ProceedChangeStatus_Click" CommandArgument="">Yes, proceed</asp:LinkButton>
<asp:Hiddenfield ID="hiddenInputField" value="test2" runat="server"/>
<input type="hidden" name="hiddenInputFieldHTML" id="CurrentlySelectedBatchID" value="test1" runat="server"/>

我尝试用它来改变隐藏变量,

document.getElementById('<%= hiddenInputField.ClientID %>').value = "test123";

然后

string s = hiddenInputField.Value;
string t = hiddenInputFieldHTML.Value;

尝试在代码隐藏中将其拉出来,但它们永远不会更改为默认值。

2 个答案:

答案 0 :(得分:1)

正如@Brian Mains所说,你的方法是正确的,应该有效。

我在使用jQuery UI时有一个similar problem,结果表明这是在DOM中操作表单的方式。如果您的对话框是jQuery UI,那么解决方案就像这样简单:

$('#some-dialog').dialog({
    closeOnEscape: true,
    open: function(event, ui) {
        $(this).parent().appendTo("form"); //this line sorted everything!
    }
}); 

答案 1 :(得分:0)

<asp:HiddenField>将始终正常工作,您指示的方法将改变它。问题可能在于你正在调用它,要么从未被调用,要么页面在设置时被回发,因此它永远不会被调用,因为页面回放得太快了......