Pagine master ASP.NET nidificate

Aggiornamento: novembre 2007

Le pagine master possono essere nidificate. In altri termini, una pagina master può fare riferimento a un'altra come relativa pagina master. In questo modo è possibile creare pagine master a componenti. Ad esempio, un sito Web di grandi dimensioni può contenere una pagina master generale in cui è definito l'aspetto del sito. I vari partner che creano contenuto per il sito possono quindi definire pagine master figlio personalizzate che fanno riferimento alla pagina master del sito e nelle quali è specificato l'aspetto del contenuto da loro inserito.

Analogamente a ogni pagina master, una pagina master figlio ha estensione master. La pagina master figlio contiene in genere controlli del contenuto che sono mappati ai segnaposto del contenuto nella pagina master padre. Sotto questo aspetto, il layout della pagina master figlio è identico a quello di qualsiasi pagina di contenuto. Tuttavia, la pagina master figlio contiene anche segnaposto specifici per la visualizzazione del contenuto fornito dalle rispettive pagine figlio. Nei tre listati seguenti è illustrata una configurazione semplice di pagine master nidificate.

File master padre:

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

File master figlio:

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

File figlio che fa riferimento alla pagina master figlio:

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

Vedere anche

Concetti

Informazioni generali sulle pagine master ASP.NET