Páginas principales ASP.NET anidadas

Actualización: noviembre 2007

Las páginas principales se pueden anidar, ya que una página principal puede hacer referencia a otra que actúe como su página principal. Las páginas principales anidadas permiten crear páginas principales divididas en componentes. Por ejemplo, un sitio de gran volumen podría contener una página principal general en la que se define la apariencia del sitio. Otros colaboradores del contenido del sitio pueden definir sus propias páginas principales secundarias, que harán referencia a la página principal del sitio y que, a su vez, definirán la apariencia del contenido de ese colaborador.

Una página principal secundaria tiene la extensión de nombre de archivo .master, como cualquier página principal. La página principal secundaria normalmente contiene controles de contenido que están asignados a los marcadores de posición de contenido de la página principal primaria. En este sentido, la página principal secundaria está diseñada como cualquier página de contenido. Sin embargo, la página principal secundaria tiene también marcadores de posición de contenido propios que van a mostrar el contenido proporcionado por sus propias páginas secundarias. En los tres listados de páginas siguientes se muestra una configuración sencilla con páginas principales anidadas.

Este es el archivo principal primario:

<% @ 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>
<form id="Form1" >
<div>
<h1>Parent Master</h1>
<p>
<font color="red">This is parent master content.</font>
</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" >
<body>
<form id="Form1" >
<div>
<h1>Parent Master</h1>
<p>
<font color="red">This is parent master content.</font>
</P>
<asp:ContentPlaceHolder ID="MainContent"  />
</div>
</form>
</body>
</html>

Este es el archivo principal secundario:

<%@ Master Language="VB" master="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="Content1"  />
      </asp:panel>
      <asp:panel  id="panel2" backcolor="pink">
         <p>This is childmaster content.</p>
         <asp:ContentPlaceHolder ID="Content2"  />
      </asp:panel>
   </asp:panel>
</asp:Content>
<%@ Master Language="C#" master="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="Content1"  />
      </asp:panel>
      <asp:panel  id="panel2" backcolor="pink">
         <p>This is child master content.</p>
         <asp:ContentPlaceHolder ID="Content2"  />
      </asp:panel>
   </asp:panel>
</asp:Content>

Este es un archivo secundario que hace referencia a la página principal secundaria:

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

Vea también

Conceptos

Información general sobre las páginas principales ASP.NET