Доступ к управлению главной страницей из usercontrol aspx, который вложен в главную страницу - PullRequest
3 голосов
/ 04 ноября 2011

У меня есть страница aspx, заключенная в главную страницу. Моя страница aspx имеет пользовательский элемент управления (ASCX) из пользовательского контроля. Я открываю всплывающее окно, в котором я хочу получить элементы управления главной страницы, как я могу это сделать.

1 Ответ

5 голосов
/ 04 ноября 2011

ASP.NET имеет внутреннее свойство для каждой страницы 'Master'.Из usercontrol вы можете перемещаться по стеку назад к Usercontrols parent> Page> Master.Если элемент управления на главной странице находится вне каких-либо держателей содержимого, вы можете получить элемент управления с помощью метода FindControl.Если он находится внутри каких-либо заполнителей содержимого, вы должны перейти к заполнителю содержимого, а затем найти элемент управления.Пример ниже.

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>

СТРАНИЦА СОДЕРЖАНИЯ

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

В моем случае метка на главной странице находится за пределами страницы содержимого.

...