Partilhar via


Como: Conteúdo de páginas mestras do ASP.NET de referência

Você pode escrever código em páginas de conteúdo que fazem referência às propriedades, métodos e controles da página mestra, com algumas restrições.A regra para as propriedades e métodos é que você pode referi-los se eles são declarados como membros Públicos da página mestra.Isso inclui propriedades públicas e métodos públicos.Você pode fazer referência a controles na página mestra independentemente de referência a membros públicos.

Para fazer referência a um membro público sobre a página mestra

  1. Adicione uma diretiva @ MasterType na página de conteúdo.Na diretiva, defina o atributo VirtualPath como o local do página mestra, como neste exemplo:

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

    Esta diretiva faz com que a propriedade Master da página de conteúdo seja altamente digitado.

  2. Escreva código que use o membro público da página mestra como um membro da propriedade Master, como no exemplo, que atribui o valor de uma propriedade pública denominada CompanyName a partir da página mestra a um caixa de texto na página de conteúdo:

    CompanyName.Text = Master.CompanyName
    
    CompanyName.Text = Master.CompanyName;
    

Para fazer referência a um controle na página mestra

  • Use o método FindControl, usando o valor retornado pela propriedade Master como o contêiner de nomeação.

    O exemplo de código a seguir mostra como usar o método FindControl para obter uma referência a dois controles na página mestra, um controle TextBox e um controle Label.Como o controle TextBox está dentro de um controle ContentPlaceHolder, você deve primeiro obter uma referência para o ContentPlaceHolder e então usar o método FindControl para localizar o controle 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;
        }
    }
    

Consulte também

Conceitos

Visão Geral de Páginas Mestras ASP.NET

Trabalhando com Páginas Mestras do ASP.NET por Programação

Outros recursos

Acessando controles do ASP.NET Programaticamente