从包含在母版页中的aspx的usercontrol访问母版页控件

时间:2011-11-04 06:49:13

标签: asp.net javascript-events c#-2.0

我有一个aspx页面,它包含在母版页中。我的aspx页面有来自用户控件的用户控件(ASCX)我打开一个弹出窗口,其中我想获得母版页控件我该怎么做。

1 个答案:

答案 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;
    }

在我的情况下,母版页中的标签位于内容页面之外。