Acredito que todos usaram a função masterpage aninhada no ASP.NET 2.0. Essa função é muito poderosa e permite aos usuários criar páginas de modelo primeiro e depois aplicá-las facilmente a outras páginas. Além disso, as páginas de modelo podem ser aninhadas, mas encontraremos um problema com as páginas de modelo aninhadas, ou seja, ao usar páginas de modelo aninhadas, não há como realizar operações visuais nelas no estado de visualização de design, então como resolver isso. problema? Pesquisei no blog do estrangeiro e encontrei um método fornecido pelo estrangeiro. Por enquanto, posso fazer um desvio para resolver esse problema, explicarei a seguir:
Podemos escrever uma classe base chamada basepage.cs e colocá-la no diretório app_code. Nesta classe, adicione uma classe chamada basepage.cs.
O atributo de runtimeMasterPageFile é um tipo de string que especifica qual arquivo de modelo usar durante o tempo de execução e substitui OnPreInit.
Método, o código é o seguinte:
classe pública BasePage: System.Web.UI.Page
{
string privada runtimeMasterPageFile;
string pública RuntimeMasterPageFile;
{
pegar
{
retornar runtimeMasterPageFile;
}
definir
{
runtimeMasterPageFile = valor;
}
}
substituição protegida void OnPreInit(EventArgs e)
{
if (runtimeMasterPageFile! = nulo)
{
this.MasterPageFile = runtimeMasterPageFile;
}
base.OnPreInit(e);
}
}
Em seguida, construímos uma página de modelo chamada mainmaster.master, adicionamos aleatoriamente informações de cabeçalho e rodapé nela, deixamos um espaço reservado para conteúdo chamado MainContent no meio e, em seguida, construímos uma página de modelo chamada submaster.master, na qual
MasterPageFile="~/MainMaster.master", para aplicar a página do template mainmaster, coloque uma tabela com uma linha e duas colunas, conforme segue:
<asp:Content ID="foo" ContentPlaceHolderId="MainContent" runat="server">
<tabela>
<tr>
<td largura="300">
Coluna Esquerda no SubMaster
<br />
<asp:ContentPlaceHolder ID="LeftColumn" runat="servidor">
</asp:ContentPlaceHolder>
</td>
<td>
Coluna direita no SubMaster
<br />
<asp:ContentPlaceHolder ID="RightColumn" runat="servidor">
</asp:ContentPlaceHolder>
</td>
</tr>
</tabela>
</asp:Conteúdo>
Finalmente, em uma página aspx, especifique este
<%@ Page Language="C#" MasterPageFile="" RuntimeMasterPageFile="SubMaster.master" CodeFileBaseClass="BasePage" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Página sem título" %>
Como você pode ver, aqui não definimos as propriedades de masyterpage, mas especificamos as propriedades de RuntimeMasterPageFile como
submaster.master, este é um modelo que é carregado em tempo de execução, e o atributo codefilebaseclass especifica a classe basepage.cs que acabamos de escrever. Desta forma, podemos ver o pull no estado de visualização de design deste ASPX e podemos arrastar e soltar. o projeto.
Deve-se notar que, de acordo com a Microsoft, diz-se que somente na próxima versão do VISUAL STUDIO haverá suporte total para alternar o estado de visualização de design completo quando os modelos estiverem aninhados.
Forneci um download de um exemplo deste artigo, clique aqui para fazer o download.