0

我在showmodaldailoge()函数中发送父窗口的引用

window.showmodaldialog("mypage.aspx", window, winsizeattributes)

因为我不想使用查询字符串或会话变量。现在我可以在客户端访问父窗口的变量了mypage.aspx。如何在mypage.aspxie in的服务器端访问父窗口变量Page_Load()

4

2 回答 2

0
  • create a client side html text box as hidden with a runat="server" and an id attribute,

  • insert a value into the hidden box from a client side jquery function.

  • read the value server side on postback with the .FindControl("yourId") method.

    Note: Use a new hidden field for each variable you wish to recall.

as long as your modal container exists on the same page as your hidden fields, you can read the values from within the modal dialog context.

于 2013-01-09T12:24:05.283 回答
0

因为我不想使用查询字符串或会话变量。.如何访问 mypage.aspx 服务器端的父窗口变量,即在 Page_Load() 中?

如果不使用查询字符串或会话变量,您将无法做到这一点。可能的选择是在第二个参数中将所需的变量传递给您的模态窗口(window据我所知,您已经传递到那里,以便访问父窗口,但您可以避免这种情况 - 有一种方法window.opener应该指向父窗口客户端),获取这些值并使用 JS 以表单形式提交它们。完成后,您将能够Request.Form["some_key"]在 mypage.aspx 后面的代码中执行类似操作。但这实际上与查询参数相同,但更复杂。

这里的问题是模式窗口将产生另一个对 asp.net 的请求,由于 web 的无状态性质,它对父窗口一无所知。基本上,父窗口的变量会从服务器上的内存中删除,只是父窗口请求完成。看一下 asp.net 页面生命周期(例如Here)。在不同请求之间共享数据的常用方法是表单、查询参数、会话和 cookie。

于 2013-01-09T12:47:06.230 回答