Condividi tramite


Procedura: fare riferimento a contenuto di pagine master ASP.NET

Aggiornamento: novembre 2007

Nelle pagine di contenuto è possibile scrivere codice che faccia riferimento a proprietà, metodi e controlli nella pagina master. Esistono però alcune limitazioni. È possibile fare riferimento ai metodi e alle proprietà se questi sono dichiarati come membri pubblici della pagina master, inclusi i metodi pubblici e le proprietà pubbliche. È possibile fare riferimento ai controlli nella pagina master indipendentemente dai membri pubblici.

Per fare riferimento a un membro pubblico nella pagina master

  1. Aggiungere una direttiva @ MasterType nella pagina di contenuto. Nella direttiva impostare l'attributo VirtualPath sul percorso della pagina master, come nel seguente esempio:

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

    Questa direttiva fa sì che la proprietà Master della pagina di contenuto sia fortemente tipizzata.

  2. Scrivere codice che utilizza il membro pubblico della pagina master come membro della proprietà Master, come nell'esempio che segue, in cui viene assegnato il valore di una proprietà pubblica denominata CompanyName della pagina master a una casella di testo presente nella pagina di contenuto:

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

Per fare riferimento a un controllo nella pagina master

  • Utilizzare il metodo FindControl, specificando il valore restituito dalla proprietà Master come contenitore dei nomi.

    Nell'esempio di codice riportato di seguito viene illustrato come utilizzare il metodo FindControl per ottenere un riferimento a due controlli nella pagina master, ovvero TextBox e Label. Poiché il controllo TextBox si trova all'interno di un controllo ContentPlaceHolder, è necessario innanzitutto ottenere un riferimento a ContentPlaceHolder e quindi utilizzare il metodo FindControl per individuare il controllo 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;
        }
    }
    

Vedere anche

Concetti

Informazioni generali sulle pagine master ASP.NET

Utilizzo di pagine master di ASP.NET a livello di codice

Altre risorse

Accesso a controlli ASP.NET a livello di codice