ステップ 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 マスタ ページを入れ子にします。
.gif)
Visual Studio 2005 の [ファイル] メニューの [新規作成] をポイントし、[ファイル] をクリックします。
.gif)
[新しい項目の追加]ダイアログ ボックスで、以下のように指定して 子マスタ ページ SubMasterPage.master を作成します。
・ [テンプレート] 欄: マスタ ページ
・ [名前] 欄: SubMasterPage.master
・ [言語] 欄: Visual Basic
・ [別のファイルにコードを書き込む] チェック ボックス: ON
.jpg)
[追加] をクリックします。
.gif)
[ソリューション エクスプローラ] で 「SubMasterPage.master」 が追加されたことを確認します。
.jpg)
.gif)
SubMasterPage.master を [ソース] 表示のままで編集します。
<%@ Master %> ディレクティブに MasterPageFile 属性を追加することで MyMasterPage.master を親マスタ ページとして指定します。
<%@ Master Language="VB"MasterPageFile="MyMasterPage.master" CodeFile="SubMasterPage. master.vb" Inherits="SubMasterPage" %>
.gif)
SubMasterPage.master の <%@ Master %> ディレクティブの下のコードをすべて削除します。
<Content> 要素を追加して、その中に ContentPlaceHolder を含む子マスタ ページのテンプレートの内容を追加します。
.jpg)
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>
.gif)
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">
.gif)
ソリューションをビルドし、MyWebForm.aspx をスタート ページとして起動すると、MyMasterPage.master のテンプレートに SubMasterPage.master のテンプレートが入れ子になっていることを確認できます。 .jpg)
まとめ以上のように、ASP.NET 2.0 ではマスタ ページによるテンプレートをあらかじめ作成しておき、それを任意の Web ページに継承して利用できます。 この機能により、サイト内の複数のページのデザインを共通化し、一貫した管理が可能になります。 |
ページトップへ