Доступ к управлению главной страницей из usercontrol aspx, который вложен в главную страницу

#asp.net #javascript-events #c#-2.0

#asp.net #dom-события #c #-2.0 #c # -2.0

Вопрос:

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

Ответ №1:

ASP.NET имеет внутреннее свойство для каждой страницы «Мастер». Из usercontrol вы можете переместить стек обратно в родительский элемент Usercontrols> Страница> Мастер. Если элемент управления на главной странице находится вне каких-либо владельцев 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;
    }
  

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

Комментарии:

1. Все в порядке, но мне нужно получить доступ во всплывающем окне пользовательского элемента управления. я попробовал некоторый Java-скрипт, который не смог бы получить контроль над главной страницей (на всплывающей странице (также на странице aspx) элемента управления ascx)