Je pense que tout le monde a utilisé la fonction masterpage imbriquée sous ASP.NET 2.0. Cette fonction est très puissante et permet aux utilisateurs de créer d'abord des pages modèles, puis de les appliquer facilement à d'autres pages. De plus, les pages de modèles peuvent être imbriquées, mais nous trouverons un problème avec les pages de modèles imbriquées, c'est-à-dire que lors de l'utilisation de pages de modèles imbriquées, il n'y a aucun moyen d'effectuer des opérations visuelles sur elles dans l'état d'affichage de conception, alors comment résoudre ce problème. problème? J'ai cherché sur le blog de l'étranger et trouvé une méthode fournie par l'étranger. Pour le moment, je peux faire un détour pour résoudre ce problème, je vais l'expliquer ci-dessous :
Nous pouvons écrire une classe de base appelée basepage.cs et la placer dans le répertoire app_code. Dans cette classe, ajoutez une classe appelée basepage.cs.
L'attribut de runtimeMasterPageFile est un type de chaîne qui spécifie le fichier modèle à utiliser pendant l'exécution et remplace OnPreInit.
Méthode, le code est le suivant :
classe publique BasePage : System.Web.UI.Page
{
chaîne privée runtimeMasterPageFile ;
chaîne publique RuntimeMasterPageFile
{
obtenir
{
retourner runtimeMasterPageFile ;
}
ensemble
{
runtimeMasterPageFile = valeur ;
}
}
remplacement protégé void OnPreInit(EventArgs e)
{
si (runtimeMasterPageFile != null)
{
this.MasterPageFile = runtimeMasterPageFile ;
}
base.OnPreInit(e);
}
}
Ensuite, nous construisons une page modèle appelée mainmaster.master, y ajoutons aléatoirement des informations d'en-tête et de pied de page, laissons un espace réservé de contenu appelé MainContent au milieu, puis créons une page modèle appelée submaster.master, dans laquelle
MasterPageFile="~/MainMaster.master", pour appliquer la page modèle mainmaster, placez un tableau avec une ligne et deux colonnes, comme suit :
<asp:Content ID="foo" ContentPlaceHolderId="MainContent" runat="server">
<table>
<tr>
<td largeur="300">
Colonne de gauche dans SubMaster
<br />
<asp:ContentPlaceHolder ID="LeftColumn" runat="server">
</asp:ContentPlaceHolder>
</td>
<td>
Colonne de droite dans SubMaster
<br />
<asp:ContentPlaceHolder ID="RightColumn" runat="server">
</asp:ContentPlaceHolder>
</td>
</tr>
</table>
</asp:Contenu>
Enfin, dans une page aspx, précisez ceci
<%@ Page Language="C#" MasterPageFile="" RuntimeMasterPageFile="SubMaster.master" CodeFileBaseClass="BasePage" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Page sans titre" %>
Comme vous pouvez le voir, ici, nous ne définissons pas les propriétés de masyterpage, mais spécifions les propriétés de RuntimeMasterPageFile comme
submaster.master, il s'agit d'un modèle qui est chargé au moment de l'exécution, et l'attribut codefilebaseclass spécifie la classe basepage.cs que nous venons d'écrire. De cette façon, nous pouvons voir l'extraction dans l'état d'affichage de conception de cet ASPX et pouvons glisser-déposer. la conception.
Il convient de noter que selon Microsoft, il est dit que ce ne sera que dans la prochaine version de VISUAL STUDIO que la prise en charge complète du changement d'état d'affichage de conception complète lorsque les modèles sont imbriqués sera disponible.
J'ai fourni un téléchargement d'un exemple de cet article, cliquez ici pour télécharger.