我有一个aspx页面,它包含在母版页中。我的aspx页面有来自用户控件的用户控件(ASCX)我打开一个弹出窗口,其中我想获得母版页控件我该怎么做。
答案 0 :(得分:5)
ASP.NET具有每个页面“Master”的内部属性。从usercontrol,您可以将堆栈向后移动到Usercontrols parent>页面>主。如果母版页中的控件位于任何内容持有者之外,则可以使用FindControl方法获取控件。如果它位于任何内容占位符内,则必须遍历内容占位符,然后您才能找到该控件。示例如下。
主强>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblVal" runat="server" Text="MasterLabel"></asp:Label>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
内容页
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<test:uc ID="test" runat="server" />
</asp:Content>
USER CONTROL
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
后面的USERCONTROL代码
protected void Page_Load(object sender, EventArgs e)
{
MasterPage mstr = this.Parent.Page.Master as MasterPage;
Label1.Text = (mstr.FindControl("lblVal") as Label).Text;
}
在我的情况下,母版页中的标签位于内容页面之外。