在子窗体的asp代码隐藏中访问javascript window.myvariable
我有一个父窗体,它使用javascript代码调用子窗体来传递json对象在子窗体的asp代码隐藏中访问javascript window.myvariable,javascript,asp.net,json,Javascript,Asp.net,Json,我有一个父窗体,它使用javascript代码调用子窗体来传递json对象 var w = window.open("childForm.aspx"); w.myJsonObj = myJSONObject; 如何在childForm.aspx onload事件中访问此变量,以便进行反序列化?Javascript变量纯粹是客户端变量,因此无法从服务器端(代码隐藏)访问它们。要在服务器端访问it,必须将该值存储在服务器可以访问它的位置 有很多选择,但这里有一个:创
var w = window.open("childForm.aspx");
w.myJsonObj = myJSONObject;
如何在childForm.aspx onload事件中访问此变量,以便进行反序列化?Javascript变量纯粹是客户端变量,因此无法从服务器端(代码隐藏)访问它们。要在服务器端访问it,必须将该值存储在服务器可以访问它的位置 有很多选择,但这里有一个:创建一个隐藏字段来存储其中的值,给该字段一个id和
runat=“server”
属性(这样就可以从代码隐藏中访问),并更新javascript来填充它
隐藏字段:
<asp:HiddenField id="SomeUniqueID" runat="server"/>
Javascript(不带JQuery):
document.getElementById(“”).setAttribute(“值”,myJSONObject);
Javascript(使用JQuery):
$('#').val(myJSONObject);
您必须将其发布到相关页面,或者您可以将其作为查询字符串参数附加到您的窗口中。open()调用,字符串化和URL编码。好的,如果我想将此值传递到打开并处理数据的新页面,那么最好的方法是什么?我不想使用url参数,因为这是一个大型序列化自定义对象。谢谢。如果您不想在查询字符串中传递它,那么可以在会话中存储该值。因此,在获取值的页面上的代码隐藏中,将其保存到session,如下所示:session[“someVariableName”]=SomeUniqueID.value代码>。然后在需要使用该值的页面上,从会话中将其读回:var jsonString=session[“someVariableName”]作为字符串代码>。
document.getElementById('<%= SomeUniqueID.ClientID %>').setAttribute("value", myJSONObject);
$('#<%= SomeUniqueID.ClientID %>').val(myJSONObject);