2014-04-08 220 views
0

我已经将自己编码到了一个角落,我接触到的建议似乎没有帮助。将JavaScript值传递给C#代码

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

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

下面是一个的ContentTemplate链接和隐藏字段,所有的(我有两个,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; 

,试图将其拉出代码隐藏,但他们从来没有改变˚F rom默认值。

+0

JavaScript代码肯定应该更新'hidden'输入。在您有机会使用它的服务器端之前,该输入的新值是否被'Page_Load'中的默认值覆盖? – David

+0

请检查您是否将ClientIdMode = static设置为页面,以便JavaScript代码可以根据ID找到元素。 –

+0

当然另一种选择是使用AJAX调用Web服务并绕过表单发布。 – Hogan

回答

0

<asp:HiddenField>将始终正常工作,并且您指示的方法将改变它。这个问题可能是你打电话给它的地方,要么是永远不会打电话,要么是在设置页面时发回页面,因此它永远不会被调用,因为页面回发太快......

+0

看起来就是这样。我原本就有一个内容模板,因为那是onlick按钮的位置,所以我将它移出来,现在它传递的很好。谢谢! – user3486740

1

As @Brian Mains states ,你的方法是正确的,应该工作。

我有一个similar problem当使用jQuery UI,事实证明是在DOM中操作表单的方式。如果您的对话框是jQuery UI,那么解决方案可能如此简单:

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