Я пытаюсь установить класс для тега body на моем сайте asp.net, который использует главную страницу и веб-формы контента. Я просто хочу иметь возможность сделать это, добавив свойство bodycssclass (см. Ниже) к директиве страницы веб-формы содержимого.
Это работает через приведенное ниже решение, но когда я пытаюсь просмотреть Default.aspx, элемент управления Content1 теряет свое содержимое. Есть идеи почему?
Вот как я это делаю. У меня есть главная страница со следующим содержанием:
<%@ Master Language="C#" ... %>
<html><head>...</head>
<body id=ctlBody runat=server>
<asp:ContentPlaceHolder ID="cphMain" runat="server" />
</body>
</html>
его код выглядит следующим образом:
public partial class Site : MasterPageBase
{
public override string BodyCssClass
{
get { return ctlBody.Attributes["class"]; }
set { ctlBody.Attributes["class"] = value; }
}
}
наследуется от:
public abstract class MasterPageBase : MasterPage
{
public abstract string BodyCssClass
{
get;
set;
}
}
мой default.aspx определяется как:
<%@ Page Title="..." [master page definition etc..] bodycssclass="home" %>
<asp:Content ID="Content1" ContentPlaceHolderID="cphMain" runat="server">
Some content
</asp:Content>
код этого файла выглядит следующим образом:
public partial class Default : PageBase { ... }
и он наследуется от:
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;
}
}
}