Практическое руководство. Ссылка на содержимое главной страницы ASP.NET
Обновлен: Ноябрь 2007
В страницах содержимого можно создавать код, который ссылается на свойства, методы и элементы управления главной страницы, с некоторыми ограничениями. Правилом для свойств и методов является то, что на них можно ссылаться, если они объявлены как открытые члены главной страницы. Сюда входят общие свойства и общие методы. Можно ссылаться на элементы управления главной страницы независимо от ссылки на общие члены.
Создание ссылки на открытый член главной страницы
Добавьте директиву @ MasterType в страницу содержимого. В директиве установите в качестве значения атрибута VirtualPath расположение главной страницы, как в следующем примере:
<%@ MasterType virtualpath="~/Masters/Master1.master" %>
Эта директива приводит к строгой типизации свойства Master страницы содержимого.
Напишите код, использующий открытый член главной страницы в качестве члена свойства Master, как в следующем примере, в котором значение открытого свойства с именем CompanyName на главной странице назначается текстовому полю на странице содержимого:
CompanyName.Text = Master.CompanyName
CompanyName.Text = Master.CompanyName;
Создание ссылки на элемент управления главной страницы
Воспользуйтесь методом FindControl, использующим значение, возвращенное свойством Master, в качестве контейнера именования.
В следующем примере показано, как использовать метод FindControl, чтобы получить ссылку для двух элементов управления на главной странице: элемента управления TextBox и элемента управления Label. Поскольку элемент управления TextBox находится внутри элемента управления ContentPlaceHolder, необходимо сначала получить ссылку на ContentPlaceHolder, а затем использовать его метод FindControl, чтобы найти элемент управления TextBox.
Sub Page_Load() Dim mpContentPlaceHolder As ContentPlaceHolder Dim mpTextBox As TextBox mpContentPlaceHolder = _ CType(Master.FindControl("ContentPlaceHolder1"), _ ContentPlaceHolder) If Not mpContentPlaceHolder Is Nothing Then mpTextBox = CType(mpContentPlaceHolder. _ FindControl("TextBox1"), TextBox) If Not mpTextBox Is Nothing Then mpTextBox.Text = "TextBox found!" End If End If ' Gets a reference to a Label control not in a ' ContentPlaceHolder Dim mpLabel As Label mpLabel = CType(Master.FindControl("masterPageLabel"), Label) If Not mpLabel Is Nothing Then Label1.Text = "Master page label = " + mpLabel.Text End If End Sub
void Page_Load() { // Gets a reference to a TextBox control inside // a ContentPlaceHolder ContentPlaceHolder mpContentPlaceHolder; TextBox mpTextBox; mpContentPlaceHolder = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1"); if(mpContentPlaceHolder != null) { mpTextBox = (TextBox) mpContentPlaceHolder.FindControl("TextBox1"); if(mpTextBox != null) { mpTextBox.Text = "TextBox found!"; } } // Gets a reference to a Label control that not in // a ContentPlaceHolder Label mpLabel = (Label) Master.FindControl("masterPageLabel"); if(mpLabel != null) { Label1.Text = "Master page label = " + mpLabel.Text; } }
См. также
Основные понятия
Общие сведения о главных страницах ASP.NET
Работа с главными страницами ASP.NET программными средствами
Другие ресурсы
Доступ к элементам управления ASP.NET программными средствами