C# 如何从子页面访问父页面的隐藏字段
在我的ASP.NET主页中,我有一个隐藏字段和一个按钮。当用户单击按钮时,我将显示弹出窗口(子页面)。我需要在加载弹出窗口时访问隐藏字段。如何使用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: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控件?由于需要将数据绑定到复选框,因此需要使用服务器控件。请参阅我的编辑。