Je tente de définir une classe sur l'étiquette body dans mon site asp.net qui utilise une page maître et des formulaires web de contenu. Je veux simplement être en mesure de le faire en ajoutant une propriété bodycssclass (voir ci-dessous) à la directive de page de formulaire web de contenu.ASP.NET Content Web Form - le contenu de l'espace réservé disparaît
Cela fonctionne à travers la solution ci-dessous mais lorsque j'essaie d'afficher Default.aspx, le contrôle Content1 perd son contenu. Des idées pourquoi?
Voici comment je le fais. J'ai une page principale avec le contenu suivant:
<%@ Master Language="C#" ... %>
<html><head>...</head>
<body id=ctlBody runat=server>
<asp:ContentPlaceHolder ID="cphMain" runat="server" />
</body>
</html>
son code regarde derrière comme:
public partial class Site : MasterPageBase
{
public override string BodyCssClass
{
get { return ctlBody.Attributes["class"]; }
set { ctlBody.Attributes["class"] = value; }
}
}
hérite de:
public abstract class MasterPageBase : MasterPage
{
public abstract string BodyCssClass
{
get;
set;
}
}
mon default.aspx est défini comme:
<%@ Page Title="..." [master page definition etc..] bodycssclass="home" %>
<asp:Content ID="Content1" ContentPlaceHolderID="cphMain" runat="server">
Some content
</asp:Content>
le code derrière pour ce fichier ressemble à:
public partial class Default : PageBase { ... }
et il hérite de:
public class PageBase : Page
{
public string BodyCssClass
{
get
{
MasterPageBase mpbCurrent = this.Master as MasterPageBase;
return mpbCurrent.BodyCssClass;
}
set
{
MasterPageBase mpbCurrent = this.Master as MasterPageBase;
mpbCurrent.BodyCssClass = value;
}
}
}
Je l'ai réduit le problème à 'MasterPageBase mpbCurrent = cela. Master comme MasterPageBase; ', si je commente cela et la ligne suivante sur le contenu reste. Il semble que le fait de référencer la page principale à ce moment-là est incorrect. –