次の方法で共有


方法 : ASP.NET マスター ページのコンテンツを参照する

更新 : 2007 年 11 月

コンテンツ ページには、一定の制約の下で、マスタ ページのプロパティ、メソッド、およびコントロールを参照するコードを記述できます。プロパティとメソッドには、それらがマスタ ページのパブリック メンバとして宣言されている場合に参照できるという規則があります。この規則に適合するのは、パブリック プロパティとパブリック メソッドです。マスタ ページのコントロールは、パブリック メンバの参照とは無関係に参照できます。

マスタ ページのパブリック メンバを参照するには

  1. @ MasterType ディレクティブをコンテンツ ページに追加します。次の例に示すように、このディレクティブの VirtualPath 属性にはマスタ ページの場所を設定します。

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

    このディレクティブにより、コンテンツ ページの Master プロパティが厳密に型指定されます。

  2. マスタ ページのパブリック メンバを Master プロパティのメンバとして使用するコードを、次の例に示すように記述します。この例では、マスタ ページの CompanyName というパブリック プロパティの値をコンテンツ ページのテキスト ボックスに割り当てます。

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

マスタ ページのコントロールを参照するには

  • FindControl メソッドを使用し、Master プロパティによって返される値を名前付けコンテナとして使用します。

    次のコード例は、FindControl メソッドを使用して、マスタ ページの 2 つのコントロール (TextBox コントロールおよび Label コントロール) への参照を取得する方法を示しています。TextBox コントロールは ContentPlaceHolder コントロールの内部にあるため、最初に ContentPlaceHolder への参照を取得し、次にその FindControl メソッドを使用して、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;
        }
    }
    

参照

概念

ASP.NET マスター ページの概要

プログラムによる ASP.NET マスター ページの操作

その他の技術情報

プログラムによる ASP.NET コントロールへのアクセス