【发布时间】:2010-04-09 09:49:22
【问题描述】:
我正在尝试在我的 asp.net 站点中的 body 标记上设置一个类,该站点使用母版页和内容 Web 表单。我只是希望能够通过向内容 web 表单页面指令添加一个 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;
}
}
}
【问题讨论】:
-
我已将问题缩小到
MasterPageBase mpbCurrent = this.Master as MasterPageBase;,如果我对此发表评论并且以下内容仍然存在。似乎当时引用母版页是不正确的。
标签: asp.net master-pages