C# 如何从子页面访问父页面的隐藏字段

C# 如何从子页面访问父页面的隐藏字段,c#,asp.net,C#,Asp.net,在我的ASP.NET主页中,我有一个隐藏字段和一个按钮。当用户单击按钮时,我将显示弹出窗口(子页面)。我需要在加载弹出窗口时访问隐藏字段。如何使用c#?访问隐藏字段好吧,您可以将隐藏字段的值传递给弹出窗口的查询字符串。大概是这样的: <asp:button id="ButtonInMainPage" runat="server" onclick="Popup();return false;" /> <asp:hidden id="hiddenValue" runat="serv

在我的ASP.NET主页中,我有一个隐藏字段和一个按钮。当用户单击按钮时,我将显示弹出窗口(子页面)。我需要在加载弹出窗口时访问隐藏字段。如何使用c#?

访问隐藏字段好吧,您可以将隐藏字段的值传递给弹出窗口的查询字符串。大概是这样的:

<asp:button id="ButtonInMainPage" runat="server" onclick="Popup();return false;" />
<asp:hidden id="hiddenValue" runat="server" />
<script type="text/javascript">
    function Popup()
    {  
       window.open('Child.aspx?hiddenValue='+document.getElementById('<%=hiddenValue.ClientID%>').value);
    }
<table>
<asp:Repeater ID="myData" runat="server">
  <ItemTemplate>
     <tr>
      <td><asp:CheckBox ID="selectedFlag" runat="server" Checked=<%# Eval("Checked") %> /></td>
      <td><asp:Label ID="dataText" runat="server" Text=<%# Eval("TextData") %>></asp:Label></td>
     </tr>
  </ItemTemplate>
</asp:Repeater>
</table>
我展示的是简单的代码,您必须根据您的项目添加必要的检查或其他检查。

这是您的问题:

在主页中,有一个gridview,其中包含一个复选框列,当选中某行的复选框时,将相应的ID添加到隐藏字段中。当用户单击弹出按钮时,将打开一个窗口,所选ID将传递到新窗口。问题是ID太长,无法在查询字符串中传递

我的解决方案:

我认为您可以删除隐藏字段,并删除弹出按钮的所有客户端脚本

<asp:button id="PopupButton" runat="server" Text="Click to pop up" />

添加按钮的服务器事件,如:

void PopupButton_Onclick(object sender, EventArgs e)
{
   string IDs = CollectTheSelectedIDsInTheGridView();
   Session["IDs"] = IDs;
   string js = @"<script type='text/javascript'>
                    window.open('Child.aspx');
                </script>";
   Page.ClientScript.RegisterStartupScript(this.GetType(),"showChild",js);
}
void PopupButton_Onclick(对象发送方,事件参数e)
{
字符串ID=CollectTheSelectedsInGridView();
会话[“IDs”]=IDs;
字符串js=@”
window.open('Child.aspx');
";
Page.ClientScript.RegisterStartupScript(this.GetType(),“showChild”,js);
}
编辑 您的数据列表必须如下所示:

<asp:button id="ButtonInMainPage" runat="server" onclick="Popup();return false;" />
<asp:hidden id="hiddenValue" runat="server" />
<script type="text/javascript">
    function Popup()
    {  
       window.open('Child.aspx?hiddenValue='+document.getElementById('<%=hiddenValue.ClientID%>').value);
    }
<table>
<asp:Repeater ID="myData" runat="server">
  <ItemTemplate>
     <tr>
      <td><asp:CheckBox ID="selectedFlag" runat="server" Checked=<%# Eval("Checked") %> /></td>
      <td><asp:Label ID="dataText" runat="server" Text=<%# Eval("TextData") %>></asp:Label></td>
     </tr>
  </ItemTemplate>
</asp:Repeater>
</table>


请提供上下文:Windows窗体、ASP.NET、MVC、WPF、Silverlight?我在隐藏字段中存储的值太长。我无法使用查询字符串。它可能会退出查询字符串最大值。因此我选择隐藏字段。然后您可以将其存储在
会话[“隐藏”]=XXXX那么如何使用Javascript在会话中存储值我认为您提出的问题不是“真实的”,不是“原始的”,为什么不发布第一个问题?非常感谢Danny chen。这对我很有帮助。:)如何在服务器端获取SelectedRowsID值。它的Javascript变量。为什么它是html控件?由于需要将数据绑定到复选框,因此需要使用服务器控件。请参阅我的编辑。