コンテンツ ページには、一定の制約の下で、マスタ ページのプロパティ、メソッド、およびコントロールを参照するコードを記述できます。プロパティとメソッドには、それらがマスタ ページのパブリック メンバとして宣言されている場合に参照できるという規則があります。この規則に適合するのは、パブリック プロパティとパブリック メソッドです。マスタ ページのコントロールは、パブリック メンバの参照とは無関係に参照できます。
マスタ ページのパブリック メンバを参照するには
-
@ MasterType ディレクティブをコンテンツ ページに追加します。次の例に示すように、このディレクティブの VirtualPath 属性にはマスタ ページの場所を設定します。
<%@ MasterType virtualpath="~/Masters/Master1.master" %>
このディレクティブにより、コンテンツ ページの Master プロパティが厳密に型指定されます。
-
マスタ ページのパブリック メンバを 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;
}
}
参照