我正在尝试使用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中运行?答案 0 :(得分:0)
您可以从服务器变量中获取数据,因此您可以通过调用Request.Form["PassArgs"]
来获取值,该值返回您的请求值,并且您可以解析表单Convert.ToString(Request.Form)
的请求集合的结果以及
否则,您可以使用带有隐藏样式的TextBox字段,以防它仍无法正常工作
<asp:TextBox ID="PassArgs" runat="server" style="display:none;"></asp:TextBox>