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