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
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.
É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