Páginas Maestras en ASP.Net

Aunque de esto ya se ha hablado mucho algunas anotaciones importantes sobre paginas maestras:



Definición:


Una página maestra es una plantilla de diseño y distribución que se puede aplicar a un sitio, (basicamente un archivo del mismo tipo del aspx, pero que tiene la extensión .master y la directiva @master en vez de la directiva @page de las páginas normales) de esta forma se facilita el control del Look and Feel de todo el sitio en un solo punto y se garantiza que el sitio en todas sus páginas se va a ver igual. Por ejemplo un menú o cualquier ayuda de navegación que deba estar en todo el sitio es un buen candidato para estar en la página maestra y no en cada página del sitio.



La página maestra incluye uno o varios controles de tipo asp:content.:


<asp:Content ID=”Content1″ ContentPlaceHolderID=”ContentPlaceHolder1″ Runat=”server“>



Creación de la página de contenido:


Las páginas de contenido en el proyecto de VS2005 que van a utilizar las página maestras son páginas del tipo Web Content Form, lo que implica que en la aplicación pueden haber páginas que usan el masterpage y otras que no, lo que dependiendo de cada escenario puede ser útil o no.


Cuando se crea la página Web Content Form, se obtiene algo como esto:


<%@ Page Language=”vb” AutoEventWireup=”false” CodeBehind=”Default.aspx.vb” Inherits=”ReportsApp._Default” MasterPageFile=”~/ReportingApp.Master”%> <asp:Content ID=”Content1″ ContentPlaceHolderID=”ContentPlaceHolder1″ Runat=”Server”> </asp:Content>



donde se nota que se está usando un master y que como ese contiene todo el código lo único que tengo aquí es mi área de trabajo que es el control asp:content.


En tiempo de diseño se ve la master al fondo más oscura y el área de diseño más clara al frente:


Ej: Web Content Form con Master Page



Asignación de la página maestra:



1. La página maestra puede asignarse a la página en la línea de directivas (la que empieza por @) usando el atributo MasterPageFile:


<%@ Page Language=”vb” AutoEventWireup=”false” CodeBehind=”Default.aspx.vb” Inherits=”ReportsApp._Default” MasterPageFile=”~/ReportingApp.Master”%>



2. La pagina maestra puede asignarse a todo el sitio en el web.config de la aplicación web:


<configuration> <pages masterpagefile=”~/ ReportingApp.master”> </configuration>



VS2008 y las Páginas maestras.



Bien, hasta aquí, poco o nada nuevo, pero algo que casi nadie sabe es que en VS2005 (Framework 2.0), se pueden utilizar masterpages anidadas, esto es una master que referencia a otro master page para tener más opciones de diseño, (es decir una masterpage que usa el atribute masterpagefile), por ejemplo se puede tener el master page del sitio, y luego el master del administrador y el master de reportes y que ambos apunten al master del sitio para tener, por ejemplo, encabezados iguales y cosas por el estilo. El problema era que en vs2005 no se tenía soporte gráfico en el editor para esto así que una vez que se ponía el código se perdía el editor. Pues bien, esto ha sido corregido en VS2008 ahora se tiene todo el poder del nuevo editor gráfico con las páginas maestras.



Otra cosa buena es que como VS2008 tiene soporte multitarget (para el framework 2 en adelante) no es necesario migrar todo el proyecto, solo se necesita abrir el VS2008, crear un proyecto en Framework 2.0 y usar las características del editor gráfico:


VS2008MultiTarget



Espero que sea de ayuda



Juan Peláez


MCTS.


Miembro del Microsoft Speakers Group Andino.


Miembro del Microsoft Influencer Framework.



Keyword: Paginas Maestras, Master Pages, VS2005, VS2008, Visual Studio 2008, Visual Studio 2005, MasterPageFile, Como unificar diseño y estilos en sitios Web, ASP.NET 2.0, Microsoft.Net, Framework 2.0, Framework 3.5.