ステップ 7 ハンズオン:
ASP.NET 2.0 を利用したマスタ ページによるページ テンプレートの実装 その 3
複数のマスタ ページを入れ子にする
グローバル ナレッジ ネットワーク株式会社
ナレッジ ソリューション本部 鈴木和久
最終更新日 2005 年 10 月 14 日
|
目標 |
ASP.NET 2.0 を利用したマスタ ページによるページ テンプレートの実装 |
|
使用技術 |
-
ASP.NET 2.0
-
Visual Basic 2005
|
|
取り上げるトピックス |
-
ASP.NET 2.0 を利用したマスタ ページを入れ子にする方法
|
|
前提知識 |
|
|
目次 |
|
|
まとめ |
ASP.NET 2.0 ではマスタ ページによるテンプレートをあらかじめ作成しておき、それを任意の Web ページに継承して利用できます。
この機能により、サイト内の複数のページのデザインを共通化し、一貫した管理が可能になります。
|
|
備考 |
|
複数のマスタ ページを入れ子にする
ここでは、ASP.NET 2.0 マスタ ページを入れ子にします。

Visual Studio 2005 の [ファイル] メニューの [新規作成] をポイントし、[ファイル] をクリックします。

[新しい項目の追加]ダイアログ ボックスで、以下のように指定して 子マスタ ページ SubMasterPage.master を作成します。
・ [テンプレート] 欄: マスタ ページ
・ [名前] 欄: SubMasterPage.master
・ [言語] 欄: Visual Basic
・ [別のファイルにコードを書き込む] チェック ボックス: ON

[追加] をクリックします。

[ソリューション エクスプローラ] で 「SubMasterPage.master」 が追加されたことを確認します。


SubMasterPage.master を [ソース] 表示のままで編集します。
<%@ Master %> ディレクティブに MasterPageFile 属性を追加することで MyMasterPage.master を親マスタ
ページとして指定します。
<%@ Master Language="VB"MasterPageFile="MyMasterPage.master"
CodeFile="SubMasterPage. master.vb" Inherits="SubMasterPage" %>

SubMasterPage.master の <%@ Master %> ディレクティブの下のコードをすべて削除します。
<Content> 要素を追加して、その中に ContentPlaceHolder を含む子マスタ ページのテンプレートの内容を追加します。

SubMasterPage.master の完成したサンプル ソースは以下のようになります。
<%@ Master Language="VB" MasterPageFile="~/MyMasterPage.master"
CodeFile="SubMasterPage.master.vb" Inherits="SubMasterPage" %>
<asp:Content ID="NewContent"
ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<br />
<asp:Label ID="Label1" Font-Bold="True" Font-Size="X-Large"
ForeColor="Green" Text="--- Input Form ---" runat="server">
</asp:Label>
<br />
<br />
<asp:ContentPlaceHolder
ID="ContentPlaceHolder2" runat=server>
</asp:ContentPlaceHolder>
</asp:Content>

MyWebForm.aspx のコンテンツを 子マスタ ページ SubMasterPage.master の ContentPlaceHolder2
に入れるため、MyWebForm.aspx のソースを以下のように編集します。
・ <%@ Master %> ディレクティブの MasterPageFile 属性による指定を
"SubMasterPage.master" に変 更する。
・ <asp:Content > 要素の ContentPlaceHolderID 属性による指定を
"ContentPlaceHolder2" に変更 する。
MyWebForm.aspx の変更箇所は以下のようになります。
<%@ Page Language="VB" MasterPageFile="SubMasterPage.master
AutoEventWireup="false" CodeFile="MyWebForm.aspx.vb" Inherits="MyWebForm"
title="Untitled Page" %> <asp:Content ID="Content1"
ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">

ソリューションをビルドし、MyWebForm.aspx をスタート ページとして起動すると、MyMasterPage.master のテンプレートに
SubMasterPage.master のテンプレートが入れ子になっていることを確認できます。

まとめ
以上のように、ASP.NET 2.0 ではマスタ ページによるテンプレートをあらかじめ作成しておき、それを任意の Web ページに継承して利用できます。
この機能により、サイト内の複数のページのデザインを共通化し、一貫した管理が可能になります。
|