Freigeben über


Geschachtelte ASP.NET-Masterseiten

Aktualisiert: November 2007

Masterseiten können geschachtelt werden, d. h. eine Masterseite kann auf eine andere, übergeordnete Masterseite verweisen. Geschachtelte Masterseiten ermöglichen die Erstellung von Masterseiten für einzelne Seitenkomponenten. Beispielsweise kann eine große Site eine allgemeine Masterseite enthalten, die das Erscheinungsbild der Site definiert. Die einzelnen Inhaltspartner der Site können dann ihre eigenen untergeordneten Masterseiten erstellen, die einen Verweis auf die allgemeine Masterseite enthalten und das Erscheinungsbild des jeweiligen Inhalts definieren.

Eine untergeordnete Masterseite hat die Dateinamenerweiterung .master, wie jede Masterseite. Die untergeordnete Masterseite enthält in der Regel Inhaltssteuerelemente, die Inhaltsplatzhaltern auf der übergeordneten Masterseite zugeordnet sind. Insofern wird die untergeordnete Masterseite wie eine Inhaltsseite gestaltet. Die untergeordnete Masterseite enthält des Weiteren eigene Inhaltsplatzhalter, um Inhalt von eigenen untergeordneten Seiten anzuzeigen. Die folgenden drei Seitenauflistungen zeigen eine einfache geschachtelte Masterseitenkonfiguration.

Dies ist die übergeordnete Masterdatei:

<% @ 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>

Dies ist die untergeordnete Masterdatei:

<%@ 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>

Dies ist eine untergeordnete Datei, die auf die untergeordnete Masterseite verweist:

<%@ 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>

Siehe auch

Konzepte

Übersicht über ASP.NET-Masterseiten