Поделиться через


Практическое руководство. Ссылка на содержимое главной страницы ASP.NET

Обновлен: Ноябрь 2007

В страницах содержимого можно создавать код, который ссылается на свойства, методы и элементы управления главной страницы, с некоторыми ограничениями. Правилом для свойств и методов является то, что на них можно ссылаться, если они объявлены как открытые члены главной страницы. Сюда входят общие свойства и общие методы. Можно ссылаться на элементы управления главной страницы независимо от ссылки на общие члены.

Создание ссылки на открытый член главной страницы

  1. Добавьте директиву @ MasterType в страницу содержимого. В директиве установите в качестве значения атрибута VirtualPath расположение главной страницы, как в следующем примере:

    <%@ MasterType virtualpath="~/Masters/Master1.master" %>
    

    Эта директива приводит к строгой типизации свойства Master страницы содержимого.

  2. Напишите код, использующий открытый член главной страницы в качестве члена свойства 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 программными средствами