Creo que todos han usado la función de página maestra anidada en ASP.NET 2.0. Esta función es muy poderosa y permite a los usuarios crear páginas de plantilla primero y luego aplicarlas fácilmente a otras páginas. Además, las páginas de plantilla se pueden anidar, pero encontraremos un problema con las páginas de plantilla anidadas, es decir, cuando se utilizan páginas de plantilla anidadas, no hay forma de realizar operaciones visuales en ellas en el estado de vista de diseño, entonces, cómo resolver esto. ¿problema? Busqué en el blog del extranjero y encontré un método proporcionado por el extranjero. Por el momento, puedo desviarme para solucionar este problema.
Podemos escribir una clase base llamada basepage.cs y colocarla en el directorio app_code. En esta clase, agregue una clase llamada basepage.cs.
El atributo de runtimeMasterPageFile es un tipo de cadena que especifica qué archivo de plantilla usar durante el tiempo de ejecución y anula OnPreInit.
Método, el código es el siguiente:
Página base de clase pública: System.Web.UI.Page
{
cadena privada runtimeMasterPageFile
cadena pública RuntimeMasterPageFile
;
{
conseguir
{
devolver tiempo de ejecuciónMasterPageFile;
}
colocar
{
runtimeMasterPageFile = valor;
}
}
anulación protegida void OnPreInit (EventArgs e)
{
si (runtimeMasterPageFile! = nulo)
{
this.MasterPageFile = runtimeMasterPageFile;
}
base.OnPreInit(e);
}
}
A continuación, construimos una página de plantilla llamada mainmaster.master, le agregamos aleatoriamente información de encabezado y pie de página, dejamos un marcador de contenido llamado MainContent en el medio y luego creamos una página de plantilla llamada submaster.master, en la cual
MasterPageFile="~/MainMaster.master", para aplicar la página de la plantilla mainmaster, coloque una tabla con una fila y dos columnas, de la siguiente manera:
<asp:Content ID="foo" ContentPlaceHolderId="MainContent" runat="servidor">
<tabla>
<tr>
<td ancho="300">
Columna izquierda en SubMaster
<br />
<asp:ContentPlaceHolder ID="Columna Izquierda" runat="servidor">
</asp:ContentPlaceHolder>
</td>
<td>
Columna derecha en SubMaster
<br />
<asp:ContentPlaceHolder ID="ColumnaDerecha" runat="servidor">
</asp:ContentPlaceHolder>
</td>
</tr>
</tabla>
</asp:Contenido>
Finalmente, en una página aspx, especifique esto
<%@ Page Language="C#" MasterPageFile="" RuntimeMasterPageFile="SubMaster.master" CodeFileBaseClass="BasePage" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Página sin título" %>
Como puede ver, aquí no configuramos las propiedades de masyterpage, sino que especificamos las propiedades de RuntimeMasterPageFile como
submaster.master, esta es una plantilla que se carga en tiempo de ejecución y el atributo codefilebaseclass especifica la clase basepage.cs que acabamos de escribir. De esta manera, podemos ver la extracción en el estado de vista de diseño de este ASPX y podemos arrastrar y soltar. el diseño.
Cabe señalar que, según Microsoft, se dice que no será hasta la próxima versión de VISUAL STUDIO que se tenga soporte completo para cambiar el estado de vista de diseño completo cuando las plantillas están anidadas.
He proporcionado una descarga de un ejemplo de este artículo, haga clic aquí para descargar.