Gewusst wie: Verweisen auf Inhalte der ASP.NET-Masterseite
Aktualisiert: November 2007
Der Code von Inhaltsseiten kann auf Eigenschaften, Methoden und Steuerelemente der Masterseite verweisen. Dabei gelten jedoch folgende Einschränkungen: Eigenschaften und Methoden müssen als öffentliche Member der Masterseite deklariert sein, damit auf sie verwiesen werden kann. Dies schließt öffentliche Eigenschaften und öffentliche Methoden ein. Verweise auf Steuerelemente der Masterseite sind unabhängig von Verweisen auf öffentliche Member möglich.
So verweisen Sie auf einen öffentlichen Member der Masterseite
Fügen Sie der Inhaltsseite eine @ MasterType-Direktive hinzu. Legen Sie in der Direktive das VirtualPath-Attribut auf den Speicherort der Masterseite fest. Beispiel:
<%@ MasterType virtualpath="~/Masters/Master1.master" %>
Diese Direktive bewirkt eine starke Typisierung für die Master-Eigenschaft der Inhaltsseite.
Schreiben Sie Code, der den öffentlichen Member der Masterseite als Member der Master-Eigenschaft verwendet. Im folgenden Beispiel wird auf diese Weise der Wert der öffentlichen Eigenschaft mit dem Namen CompanyName von der Masterseite auf ein Textfeld der Inhaltsseite übertragen:
CompanyName.Text = Master.CompanyName
CompanyName.Text = Master.CompanyName;
So verweisen Sie auf ein Steuerelement der Masterseite
Verwenden Sie die FindControl-Methode mit dem Wert, den die Master-Eigenschaft als Namenscontainer zurückgibt.
Das folgende Codebeispiel zeigt, wie Sie mit der FindControl-Methode einen Verweis auf zwei Steuerelemente der Masterseite, ein TextBox-Steuerelement und ein Label-Steuerelement, erhalten können. Da sich das TextBox-Steuerelement innerhalb desContentPlaceHolder-Steuerelements befindet, müssen Sie zuerst auf das ContentPlaceHolder-Steuerelement verweisen und dann mit dessen FindControl-Methode das TextBox-Steuerelement finden.
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; } }
Siehe auch
Konzepte
Übersicht über ASP.NET-Masterseiten
Programmgesteuertes Verwenden von ASP.NET-Masterseiten