从弹出窗体中查找父窗体的页面ID

时间:2011-08-31 11:55:33

标签: asp.net-4.0

我有两页

  1. 母版页
  2. 页面使用母版页
  3. 我在第二页中使用“window.open”打开弹出窗口。 我在第二页中有文本框控件,并使用下面的代码尝试在弹出页面中查找控件。

    window.opener.document.getElementById('textbox').value
    

    此代码无法找到控件。

    然后我检查了第二种形式的页面源,并将控制ID的格式显示出来。就像下面一样。

    “_ ctl0_ContentPlaceHolder1_textbox”

    并将代码更改为以下并获得成功。 “window.opener.document.getElementById( '_ ctl0_ContentPlaceHolder1_textbox')。值”

    我的查询是 - >我不是这种方法。如果我做错了,请纠正。

2 个答案:

答案 0 :(得分:1)

使用ASP.NET 4.0,您可以选择设置ClientIDMode,在这种情况下可以帮助您。 将ClientIDMode设置为“Static”将确保框架不会更改您的ID值。

在您拥有文本框的页面中:

<asp:TextBox ID="MyTextBox" runat="server" ClientIDMode="Static" /> 

然后你应该能够通过这样的方式获得价值:

window.opener.document.getElementById('textbox').value

参考:MSDN - ClientIDMode

答案 1 :(得分:1)

问题在于,如果您使用母版页,您的内容页面的控件将被重命名,从而难以从JavaScript访问它们。

使用以下代码解决问题:

<asp:TextBox ID="textbox" runat="server" ClientIDMode="Static"></asp:TextBox>