Day02-2
目的
- マスタページでサイト共通のレイアウトを作成しよう!
- ヘッダとフッタの設定方法を学習する。
マスタページ
- 拡張子は
.master
概要
- ヘッダ/フッタの様なサイト共通のレイアウトをテンプレートとして用意しておき、
コンテンツ部分だけをページ単位に切り替える。
PlaceHolder(置き場所)
- ContentsPlaceHolder: コンテンツの置き場所
コンテンツページ
- 拡張子は
.aspx
マスタページの設定方法
コンテンツ作成時に、「マスタページを選択する。」を有効にして適用するマスタページを選択する。
※ プレイスホルダは、複数選択することが可能
マスタページとコンテンツの関連付け
マスタページ側
<%@ Master Language="VB" %> ・・・(1)
・・・中略・・・
<asp:contentplaceholder id="cph" tunat="server">
</asp:contentplaceholder>
@Master
ディレクティヴでマスタページの挙動を定義する。
コンテンツページ側
<%@ Page Language="VB" _
MasterPageFile="~/Day02/MyMaster.master" _ ・・・(1)
Title="コンテンツページ" %>
<asp:Content ID="Content 1" ContentPlaceHolderID="cph" _
Runat="Server"> ・・・(2)
・・・中略・・・
</asp:Content>
MasterPageFile
属性を指定して、マスタ/コンテンツページを関連付ける。ContentPlaceHolderID
属性を指定して、マスタのコンテンツ/コンテンツを関連付ける。
マスタページを入れ子に指定する方法
- マスタページは入れ子にすることができる。
具体的な方法
- マスタページ作成ダイアログで、
マスタページを選択する欄にチェックを入れるだけ。
マスタページの内容を動的に変更する
- マスタページ/コンテンツページでは、コンテンツページの側から動的にアクセスページにアクセスすることができる。
サンプル
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Protected mst As MasterPage = Page.Master
Dim img As Image = DirectCast(mst.FindControl("img), Image)
img.ImageUrl = "http://www.web-deli.com/image/logo.gif"
End Sub
解説
Controlオブジェクト
- サーバコントロールのオブジェクト
FindControlメソッド
- 指定されたID値をキーに、マスタページ内のサーバコントロールを取得する。
DirectCast
DirectCast(任意の式, 型名)
?- 式であらわされる値を指定された型名に変換する。
Tip: アプリケーション共通のページ設定を定義するには?
- アプリケーション内で共通の設定を指定することができる。
例: アプリケーション内でセッション機能を無効にする方法
-
web.configに下記の記述を追加する。
<pages>
要素で利用可能な主な属性
属性 | 概要 | デフォルト値 |
---|---|---|
buffer | 応答バッファを有効にするか | true |
compilationMode | ページコンパイルを有効にするか | Always |
enableSessionState | セッションを使用するか | true |
enableViewState | ビューステートを使用するか | true |
enableViewStateMac | ビューステートの妥当性検証機能を利用するか | true |
maintainScrollPositionOnPostBack | ポストバックの前後でスクロール位置を維持するか | false |
masterPageFile | ページを適用するマスタページ | - |
maxPageStateFieldLength | ビィーステートひとつ辺りの最大文字列長 | -1(無制限) |
styleSheetTheme | ページに適応するテーマ | - |
theme | ページに適用するテーマ | - |
validationRequest | リクエストデータの検証結果を行うか | true |
viewStateEncryptionMode | ビューステートの暗号化モード | Auto |
まとめ
- マスタページを利用することで、ヘッダ/フッタメニュー等を指定可能。
- (.masterファイル)
- ContentPlaceHolderコントロールに対応する。
- Contentコントロール(完コンテンツ)を配置することでテンプレートにより、ページを作成することが可能
- マスタページに複数の
ContentPlaceHolderコントロール
を配置することが可能。 - コンテンツページからマスタページを操作する場合、
Page.Masterプロパティ
より、Master.Pageオブジェクト
を取得する。
以上