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

发布于 2024-12-13 18:42:31 字数 89 浏览 1 评论 0原文

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

I have a aspx page which enclosed in master page. My aspx page have user control (ASCX) from user control I am opening a pop up in which I want to get master page controls how can I do it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

勿挽旧人 2024-12-20 18:42:31

ASP.NET 的每个页面都有内部属性“Master”。从用户控件中,您可以向后遍历堆栈到用户控件父级>页码>掌握。如果母版页中的控件位于任何 contentplace 持有者之外,则可以使用 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>

用户控制

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

用户控制后面的代码

 protected void Page_Load(object sender, EventArgs e)
    {
        MasterPage mstr = this.Parent.Page.Master as MasterPage;
        Label1.Text = (mstr.FindControl("lblVal") as Label).Text;
    }

在我的例子中,母版页中的标签位于内容页之外。

ASP.NET has internal property for each page 'Master'. From usercontrol you can travese the stack backwards to Usercontrols parent > Page > Master. If the control in master page is outside any contentplace holders, you can get the control using FindControl method. If it is inside any content place holders, you have to traverse to the content place holder and then you can find the control. The example is below.

MASTER

<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>

CONTENT PAGE

<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 CODE BEHIND

 protected void Page_Load(object sender, EventArgs e)
    {
        MasterPage mstr = this.Parent.Page.Master as MasterPage;
        Label1.Text = (mstr.FindControl("lblVal") as Label).Text;
    }

In my case the Label in master page is outside content page.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文