共用方式為


巢狀 ASP.NET 主版頁面

更新:2007 年 11 月

主版頁面 (Master Page) 可以是巢狀的,也就是說一個主版頁面會參考另一個頁面做為其主版。巢狀的主版頁面可讓您建立元件化的主版頁面。例如,大型的網站可能會包含整體的主版頁面來定義網站的外觀。然後,不同的網站內容合作夥伴便可以定義自己的子主版頁面,而該主版頁面會參考網站主版 (Site Master) 並定義該合作夥伴的內容外觀。

和其他所有主版頁面一樣,子主版頁面的副檔名是 .master。子主版頁面通常會包含內容控制項,這些控制項對應至父主版頁面上的內容預留位置。在這種情況下,子主版頁面的配置方式就和任何內容頁面一樣。不過,子主版頁面本身也有內容預留位置,目的是顯示其子頁面所提供的內容。下列三個頁面清單顯示了簡單的巢狀主版頁面組態。

這是父主版檔案:

<% @ Master Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
<head >
    <title>Untitled Page</title>
</head>
<form id="Form1" >
<div>
<h1>Parent Master</h1>
<p style="font:color=red">This is parent master content.</p>
<asp:ContentPlaceHolder ID="MainContent"  />
</div>
</form>
</body>
</html>
<% @ Master Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 
    1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
    <title>Untitled Page</title>
</head>
<body>
<form id="Form1" >
<div>
<h1>Parent Master</h1>
<p style="font:color=red">This is parent master content.</p>
<asp:ContentPlaceHolder ID="MainContent"  />
</div>
</form>
</body>
</html>

這是子主版檔案:

<%@ Master Language="VB" MasterPageFile="~/Parent.master"%> 
<asp:Content id="Content1" ContentPlaceholderID="MainContent" >
   <asp:panel  id="panelMain" backcolor="lightyellow">
   <h2>Child master</h2>
      <asp:panel  id="panel1" backcolor="lightblue">
        <p>This is childmaster content.</p>
        <asp:ContentPlaceHolder ID="ChildContent1"  />
      </asp:panel>
      <asp:panel  id="panel2" backcolor="pink">
         <p>This is childmaster content.</p>
         <asp:ContentPlaceHolder ID="ChildContent2"  />
      </asp:panel>
      <br />
   </asp:panel>
</asp:Content>
<%@ Master Language="C#" MasterPageFile="~/Parent.master"%> 
<asp:Content id="Content1" ContentPlaceholderID="MainContent" >
   <asp:panel  id="panelMain" backcolor="lightyellow">
   <h2>Child master</h2>
      <asp:panel  id="panel1" backcolor="lightblue">
        <p>This is child master content.</p>
        <asp:ContentPlaceHolder ID="ChildContent1"  />
      </asp:panel>
      <asp:panel  id="panel2" backcolor="pink">
         <p>This is child master content.</p>
         <asp:ContentPlaceHolder ID="ChildContent2"  />
      </asp:panel>
      <br />
   </asp:panel>
</asp:Content>

這是參考子主版頁面的子檔案:

<%@ Page Language="VB" MasterPageFile="~/Child.master"%>
<asp:Content id="Content1" ContentPlaceholderID="ChildContent1" >
   <asp:Label  id="Label1" 
        text="Child label1" font-bold="true" />
   <br>
</asp:Content>
<asp:Content id="Content2" ContentPlaceholderID="ChildContent2" >
   <asp:Label  id="Label2" 
        text="Child label2" font-bold="true"/>
</asp:Content>
<%@ Page Language="C#" MasterPageFile="~/Child.master"%>
<asp:Content id="Content1" ContentPlaceholderID="ChildContent1" >
   <asp:Label  id="Label1" 
        text="Child label1" font-bold="true" />
   <br />
</asp:Content>
<asp:Content id="Content2" ContentPlaceholderID="ChildContent2" >
   <asp:Label  id="Label2" 
        text="Child label2" font-bold="true"/>
</asp:Content>

請參閱

概念

ASP.NET 主版頁面概觀