MasterPage (Clase)
Ensamblado: System.Web (en system.web.dll)
Una página principal funciona como contenedor de plantillas y página de combinación de las páginas de contenido de la aplicación Web ASP.NET. Las páginas principales constituyen un método muy útil para compartir estructura y contenido entre varias páginas de contenido. Se utilizan marcadores de posición de contenido para definir las secciones de la página principal que se deben reemplazar con contenido de las páginas de contenido.
Al utilizar una página maestra y las páginas de contenido relacionadas, se agregan las etiquetas de documento XHTML necesarias (por ejemplo html, head y body) únicamente en la página principal y se dejan de crear los demás archivos .aspx (páginas ASP.NET) como páginas Web independientes. Las páginas de contenido definen el contenido que se debe insertar en los marcadores de posición de la página principal.
Cuando se realiza la solicitud HTTP de una página en tiempo de ejecución, la página principal y las de contenido se combinan en una sola clase con el mismo nombre que las páginas de contenido. La clase compilada y combinada resultante se deriva de la clase Page.
Una página principal puede contener marcado directo y controles de servidor, además de controles contenedor. Todos los elementos ubicados en la página principal fuera de un control ContentPlaceHolder se procesa en todas las páginas que resultan de la combinación de la página principal y las páginas de contenido.
Cada una de las páginas de contenido relacionada con la página principal debe hacer referencia a la página principal en un atributo MasterPageFile de su directiva @ Page. Las páginas de contenido sólo pueden tener esa directiva @ Page y uno o varios controles Content. Todo el texto, el marcado y los controles de la página se deben ubicar en controles Content. El control ContentPlaceHolder de una página principal a la que está asociado un control Content se identifica estableciendo la propiedad ContentPlaceHolderID del control Content.
En tiempo de ejecución, el contenido de cada control Content de la página solicitada se combina con la página principal en la ubicación exacta del control ContentPlaceHolder relacionado de cada control. El resto del marcado y de los controles de la página principal no se ven afectados. Los controladores de eventos pueden encontrarse en la clase principal y en la página de contenido. Para obtener más información, vea Eventos en páginas principales y páginas de contenido ASP.NET.
La clase MasterPage está asociada a los archivos que tienen la extensión .master. Estos archivos se compilan en tiempo de ejecución como objetos MasterPage y se almacenan en la memoria caché del servidor.
El elemento de paginación especial se pone a disposición de la página de contenido a través de la propiedad Master de la clase base Page. La propiedad Master devuelve la instancia de la página principal; sin embargo, tiene como tipo la clase base MasterPage. Para tener acceso a los controles, propiedades y funciones de la página principal, la propiedad Master se puede convertir en MasterPage. El nombre de clase de la página principal se define mediante el atributo ClassName de la directiva @ Master.
Nota: |
|---|
| Los archivos con la extensión .master no se presentan en el explorador. |
Las directivas válidas en una página principal son las mismas que las que están disponibles en un objeto UserControl y pueden contener los siguientes atributos:
-
AutoEventWireup
-
ClassName
-
CodeFile
-
CompilerMode
-
CompilerOptions
-
Debug
-
Description
-
EnableTheming
-
EnableViewState
-
Explicit
-
Inherits
-
Language
-
LinePragmas
-
MasterPageFile
-
Src
-
Strict
-
WarningLevel
Las directivas de la página principal no reemplazan las directivas de cada una de las páginas de contenido.
Por lo general, las páginas principales se crean mediante declaración. Si desea crear una página principal mediante programación, derive directamente desde la clase MasterPage. Además de ampliar la clase MasterPage, debe crear el archivo .master para mostrar visualmente la interfaz de usuario (IU) asociada a las clases invocadas en el archivo de código fuente.
Nota: |
|---|
| Al crear una página principal creando primero una clase propia, se debe incluir todos los espacios de nombres requeridos para las clases que utiliza la página. |
Para obtener más información acerca de las páginas principales, vea Información general sobre las páginas principales ASP.NET.
Esta sección contiene cuatro ejemplos de código:
-
En el primer ejemplo de código se muestra cómo crear una página principal mediante declaración.
-
El segundo ejemplo de código representa la página de contenido asociada a la página principal creada en el primer ejemplo de código.
-
En el tercer ejemplo de código se muestra cómo agregar una propiedad a una página principal.
-
En el cuarto ejemplo de código se muestra cómo usar una página de contenido para tener acceso a una propiedad pública en la página principal.
En el siguiente ejemplo de código se muestra cómo crear una página principal mediante declaración y cómo agregarle contenido con una página de contenido. La primera página Web es la página .master, denominada MasterPageSample_1.master.
<%@ 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>MasterPage Example</title> </head> <body> <form id="form1" runat="server"> <div> <asp:contentplaceholder id="ContentPlaceHolder1" runat="server" /> </div> </form> </body> </html>
El siguiente ejemplo de código representa la página de contenido asociada a MasterPageSample_1.master. Contiene un control Content e identifica el control ContentPlaceHolder con el que está asociado el contenido utilizando la propiedad ContentPlaceHolderID.
<%@ Page Language="C#" MasterPageFile="~/MasterPageSample_1cs.master" Title="Content Page"%> <asp:content runat="server" contentplaceholderid="ContentPlaceHolder1" >Hello, Master Pages!</asp:content>
En el siguiente ejemplo de código se muestra cómo agregar una propiedad a una página principal. El atributo ClassName se utiliza para dar nombre a la página principal.
<%@ Master Language="C#" ClassName="MasterExample" %> <script runat="server"> public string SiteName { get { return "My Site Name"; } } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>MasterPage Example</title> </head> <body> <form id="form1" runat="server"> <div> <asp:contentplaceholder id="ContentPlaceHolder1" runat="server"> </asp:contentplaceholder> </div> </form> </body> </html>
En el siguiente ejemplo de código se muestra cómo usar una página de contenido para tener acceso a la propiedad pública SiteName en la página principal del ejemplo de código anterior.
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" Title="MasterPage Example" %> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { MasterExample m = (MasterExample)Page.Master; mylabel.Text = m.SiteName; } </script> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> Hello, Master Pages! <asp:Label runat="server" Text="Label" ID="mylabel"></asp:Label> </asp:Content>
- AspNetHostingPermission para su funcionamiento en un entorno alojado en host. Valor de petición: LinkDemand; valor de permiso: Minimal.
- AspNetHostingPermission para su funcionamiento en un entorno alojado en host. Valor de petición: InheritanceDemand; valor de permiso: Minimal.
System.Web.UI.Control
System.Web.UI.TemplateControl
System.Web.UI.UserControl
System.Web.UI.MasterPage
Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter
Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.
Nota: