Freigeben über


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

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

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

Weitere Ressourcen

Programmgesteuertes Zugreifen auf ASP.NET-Steuerelemente