lunes, 6 de enero de 2014

Páginas maestras ASP.NET

Las páginas maestras de ASP.NET permiten crear un diseño coherente para las páginas de la aplicación. Puede definir el aspecto, el diseño y el comportamiento estándar que desea que tengan todas las páginas (o un grupo de páginas) de la aplicación en una sola página maestra. A continuación, puede crear páginas de contenido individuales que incluyan el contenido que desea mostrar. Cuando los usuarios solicitan las páginas de contenido, las combinan con la página maestra con el fin de generar una salida que combine el diseño de la página maestra con el de la página de contenido.

Las páginas maestras se componen en realidad de dos partes, la propia página maestra y una o varias páginas de contenido.
NotaNota
También se pueden anidar páginas maestras. Para obtener información detallada, vea Páginas maestras ASP.NET anidadas.

Páginas maestras

Una página maestra es un archivo de ASP.NET con la extensión .master (por ejemplo, MySite.master) que tiene un diseño predefinido que puede incluir texto estático, elementos HTML y controles de servidor. La página maestra se identifica mediante una directiva @ Master especial que reemplaza la directiva @ Page utilizada en las páginas .aspx normales. El aspecto de la directiva es el siguiente:
<%@ Master Language="VB" %>
La directiva @ Master puede contener prácticamente las mismas directivas que una directiva @ Control. Por ejemplo, la directiva de la página maestra siguiente incluye el nombre de un archivo de código subyacente y asigna un nombre de clase a la página maestra.
<%@ Master Language="VB" CodeFile="MasterPage.master.vb" Inherits="MasterPage" %>
Además de la directiva @ Master, la página maestra también incluye todos los elementos HTML de nivel superior de una página, como htmlhead y form. Por ejemplo, en una página maestra podría utilizar una tabla HTML para el diseño, un elemento img para el logotipo de la compañía, texto estático para el aviso de copyright y controles de servidor para crear la navegación estándar en el sitio. Puede utilizar cualquier elemento HTML y ASP.NET en la página maestra.

Marcadores de posición de contenido reemplazables

Además del texto estático y los controles que aparecerán en todas las páginas, la página maestra también incluye uno o varios controles ContentPlaceHolder. Estos controles PlaceHolder definen las regiones que incluirán contenido reemplazable. A su vez, el contenido reemplazable se define en las páginas de contenido. Tras definir los controles ContentPlaceHolder, una página maestra tendría el siguiente aspecto:
<% @ 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" >
<head runat="server" >
    <title>Master page title</title>
</head>
<body>
    <form id="form1" runat="server">
        <table>
            <tr>
                <td><asp:contentplaceholder id="Main" runat="server" /></td>
                <td><asp:contentplaceholder id="Footer" runat="server" /></td>
            </tr>
        </table>
    </form>
</body>
</html>

Páginas de contenido

Para definir el contenido de los controles PlaceHolder de la página maestra, cree páginas de contenido individuales, que son páginas ASP.NET (archivos .aspx y, opcionalmente, archivos de código subyacente) que están enlazadas a una página maestra concreta. El enlace se establece en la directiva @ Page de la página de contenido al incluir un atributo MasterPageFile que apunta a la página maestra que se va a utilizar. Por ejemplo, una página de contenido podría tener la siguiente directiva@ Page, que la enlaza con la página Master1.master.
<%@ Page Language="VB" MasterPageFile="~/MasterPages/Master1.master" Title="Content Page" %>
En la página de contenido, cree el contenido agregando los controles Content y asignándolos a los controles ContentPlaceHolder de la página maestra. Por ejemplo, la página maestra podría tener marcadores de posición de contenido denominados Main y Footer. En la página de contenido, puede crear dos controles Content, uno asignado al control ContentPlaceHolderMain y el otro asignado al control ContentPlaceHolderFooter, como se muestra en la ilustración siguiente.
Reemplazar el contenido del marcador de posición
Gráfico MasterPagesMerge
Después de crear los controles Content, agrégueles texto y controles. En una página de contenido, todo lo que no esté dentro de los controles Content (excepto los bloques de script del código del servidor) producirá un error. En una página de contenido puede realizar las mismas tareas que en una página de ASP.NET. Por ejemplo, puede generar el contenido de un control Content utilizando controles de servidor y consultas de base de datos u otros mecanismos dinámicos.
Una página de contenido podría tener el siguiente aspecto:
<% @ Page Language="VB" MasterPageFile="~/Master.master" Title="Content Page 1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
    Main content.
</asp:Content>
    
<asp:Content ID="Content2" ContentPlaceHolderID="Footer" Runat="Server" >
    Footer content.
</asp:content>
[C#]
<% @ Page Language="C#" MasterPageFile="~/Master.master" Title="Content Page 1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
    Main content.
</asp:Content>
    
<asp:Content ID="Content2" ContentPlaceHolderID="Footer" Runat="Server" >
    Footer content.
</asp:content>
La directiva @ Page enlaza la página de contenido a una página maestra concreta y define un título para la página que se combinará en la página maestra. Tenga en cuenta que la página de contenido no incluye otro marcado fuera de los controles Content. (La página maestra debe contener un elemento head con el atributorunat="server" para que se pueda combinar la configuración del título en tiempo de ejecución.)
Puede crear varias páginas maestras para definir diseños distintos para partes diferentes del sitio, y un conjunto diferente de páginas de contenido para cada página maestra.

Las páginas maestras proporcionan una funcionalidad que tradicionalmente los programadores creaban copiando el código, el texto y los elementos de control existentes repetidamente, mediante conjuntos de marcos, archivos de inclusión de elementos comunes, controles de usuario de ASP.NET, etc. Entre las ventajas de las páginas maestras se incluyen las siguientes:
  • Permiten centralizar las funciones comunes de las páginas para que las actualizaciones puedan llevarse a cabo en un solo lugar.
  • Facilitan la creación de un conjunto de controles y código, y aplican los resultados en un conjunto de páginas. Por ejemplo, puede utilizar los controles en la página maestra para crear un menú que se aplique a todas las páginas.
  • Proporcionan un control más preciso sobre el diseño de la página final al permitir controlar el modo en que se representan los controles PlaceHolder.
  • Proporcionan un modelo de objetos que permite personalizar la página maestra a partir de páginas de contenido individuales.

No hay comentarios:

Publicar un comentario