从iFramed代码背后获得父控件的隐藏控制

本文关键字:控件 隐藏 控制 iFramed 代码 背后 | 更新日期: 2023-09-27 18:07:37

在我的父页面我有一个隐藏控件:

<input type="hidden" id="CaseID" value="" runat="server" />

我需要我的页面在iFrame能够从c#代码后面得到这个值。到目前为止,我还没有成功。

在子页面的代码后面,我已经尝试了这种变化:

var theParent = this.Page.Parent;

但是我总是得到null。

从iFramed代码背后获得父控件的隐藏控制

从服务器的角度来看,在启动iframe的页面和包含在该iframe中的页面之间根本没有关系。它们是两个完全不同且不相关的HTTP请求。在代码背后,它们没有任何共同之处,也无法相互引用。

因此,您需要使用与需要将数据从一个页面"移动"到另一个页面相同的方法。两种常见的方法(虽然这绝不是唯一的方法,甚至不是最好的方法)是:
  • 会话对象。PageABC可以在会话中存储一段数据,PageXYZ可以从会话中读取该数据。
  • URL请求中的参数。PageABC可以调用URL(甚至可以使用它作为iFrame的SRC,提示-提示)像这样:PageXYZ.aspx?someKey=someValue。PageXYZ可以从请求对象(Request["someKey"])访问URL参数

其他需要考虑的事情:如果PageABC和PageXYZ相互结合操作,也许将它们作为单独的页面并不是最好的方法。PageXYZ实际上是ControlXYZ并包含在PageABC上可能更有意义。它仍然可以使用jQuery对话框作为弹出窗口呈现给用户(或者使用UpdatePanels和ModalPopupExtenders,如果你是受虐狂;)。