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="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 runat="server">
    <title>Untitled Page</title>
</head>
<body>
<form id="Form1" runat="server">
<div>
<h1>Parent Master</h1>
<p style="font:color=red">This is parent master content.</p>
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
</div>
</form>
</body>
</html>

File master figlio:

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

File figlio che fa riferimento alla pagina master figlio:

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

Aggiunte alla community

Mostra: