実行時には、マスタ ページは次のシーケンスで処理されます。
ユーザーはコンテンツ ページの URL を入力することでページを要求します。
ページがフェッチされると、@ Page ディレクティブが読み取られます。ディレクティブがマスタ ページを参照する場合、マスタ ページも同様に読み取られます。これがページの初めての要求であった場合は、両方のページがコンパイルされます。
コンテンツが更新されているマスタ ページは、コンテンツ ページのコントロール ツリーにマージされます。
個々のContent コントロールのコンテンツは、マスタ ページ内の対応する ContentPlaceHolder コントロールにマージされます。
結果としてマージされたページが、ブラウザに表示されます。
このプロセスは次のようになります。
実行時のマスタ ページ
.gif)
ユーザーの観点からは、連結されたマスタ ページとコンテンツ ページは単一の独立したページです。ページの URL はコンテンツ ページの URL です。
プログラミングの観点からは、2 つのページはそれぞれのコントロールの別個のコンテナとして動作します。コンテンツ ページはマスタ ページのコンテナとして動作します。ただし、次のセクションで説明するように、コンテンツ ページのコードからパブリック マスタ ページ メンバを参照できます。
マスタ ページはコンテンツ ページの一部となります。実際には、マスタ ページは、コンテンツ ページの子として、またそのページ内のコンテナとして動作します。これは、ユーザー コントロールの動作とほぼ同じです。ただし、この場合、マスタ ページは、ブラウザに表示されるすべてのサーバー コントロールのコンテナです。マージされたマスタ ページとコンテンツ ページのコントロール ツリーは、たとえば次のようになります。
Page
Master Page
(Master page markup and controls)
ContentPlaceHolder
Content page markup and server controls
(Master page markup and controls)
ContentPlaceHolder
Content page markup and server controls
(Master page markup and controls)このダイアグラムは簡略化されています。コンテンツ ページが対応する Content コントロールを持たない場合、マスタ ページは、ContentPlaceHolder コントロール内にマークアップとコントロールを持つことになります。
一般に、この構造はページの構築方法やページのプログラム方法には影響しません。ただし、場合によっては、マスタ ページにページ全体のプロパティを設定すると、マスタ ページはページ上のコントロールにとって最も近い親であるため、構造がコンテンツ ページの動作に影響することがあります。たとえば、コンテンツ ページの EnableViewState プロパティを true に設定し、マスタ ページで同じプロパティを false に設定している場合、マスタ ページ上の設定が優先されるため、実際にはビューステートが無効化されます。