隐藏字段在代码隐藏中失去价值?

时间:2017-12-12 21:50:06

标签: javascript c# asp.net webforms

我正在尝试使用HiddenField将数据从我的客户端传递到服务器。

使用Javascript / UI.ascx

<asp:HiddenField ID="PassArgs" runat="server" EnableViewState="true"/>
//Tried using EnableViewState, but still no luck


<script>

document.getElementById("<%=PassArgs.ClientID%>").value = JSON.stringify(SP.UI.ModalDialog.get_childDialog().get_args());
alert(document.getElementById("<%=PassArgs.ClientID%>").value); 
//Alert shows correct data to be passed

</script>

但是当我尝试从代码隐藏中访问我的HiddenField时,我的结果是空的。

代码隐藏

var jss = new JavaScriptSerializer();

var dict = jss.Deserialize<Dictionary<string, dynamic>>(PassArgs.Value);
//PassArgs.Value = ""     --- whyyyy???

我发布此问题作为最后的手段,因为我花了整整一天的时间查看类似的问题,但我无法让这个问题适用于我的情况。

我如何警惕PassArgs&#39;包含正确的值,但我的代码后面显示为空?我尝试过使用HiddenFields,TextBoxes和Labels,但所有结果都是一样的。

编辑:当脚本运行时,HiddenField似乎有正确的值,我不认为这是问题,但我认为脚本运行后已经尝试在代码隐藏中访问它。我想这可能就是为什么HiddenField显示为空,因为脚本已经运行了。在调试器进入代码隐藏(UI.ascx.cs)访问它之前,如何让它在UI.ascx中运行?

1 个答案:

答案 0 :(得分:0)

您可以从服务器变量中获取数据,因此您可以通过调用Request.Form["PassArgs"]来获取值,该值返回您的请求值,并且您可以解析表单Convert.ToString(Request.Form)的请求集合的结果以及

否则,您可以使用带有隐藏样式的TextBox字段,以防它仍无法正常工作

<asp:TextBox ID="PassArgs" runat="server" style="display:none;"></asp:TextBox>