Partager via


Comment : référencer le contenu de la page maître ASP.NET

Mise à jour : novembre 2007

Vous pouvez écrire du code dans les pages de contenu qui référence les propriétés, les méthodes et les contrôles de la page maître, avec quelques restrictions. La règle pour les propriétés et les méthodes est que vous pouvez les référencer si elles sont déclarées comme membres publics de la page maître. Cela inclut les propriétés et les méthodes publiques. Vous pouvez référencer des contrôles de la page maître indépendamment de la référence de membres publics.

Pour référencer un membre public de la page maître

  1. Ajoutez une directive @ MasterType dans la page de contenu. Dans la directive, affectez à l'attribut VirtualPath une valeur correspondant à l'emplacement de la page maître, comme dans cet exemple :

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

    Cette directive rend la propriété Master de la page de contenu fortement typée.

  2. Écrivez du code qui utilise le membre public de la page maître en tant que membre de la propriété Master, comme dans cet exemple, qui assigne la valeur d'une propriété publique nommée CompanyName de la page maître à une zone de texte sur la page de contenu :

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

Pour référencer un contrôle de la page maître

  • Utilisez la méthode FindControl, en employant la valeur retournée par la propriété Master comme conteneur de dénomination (naming container).

    L'exemple de code suivant montre comment utiliser la méthode FindControl pour obtenir une référence à deux contrôles de la page maître, un contrôle TextBox et un contrôle Label. Le contrôle TextBox étant contenu dans un contrôle ContentPlaceHolder, vous devez d'abord obtenir une référence au contrôle ContentPlaceHolder, puis utiliser sa méthode FindControl pour localiser le contrôle 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;
        }
    }
    

Voir aussi

Concepts

Vue d'ensemble des pages maîtres ASP.NET

Utilisation des pages maîtres ASP.NET par programme

Autres ressources

Accès par programme aux contrôles ASP.NET