【问题标题】:ASP.NET Content Web Form - content from placeholder disappearsASP.NET 内容 Web 窗体 - 占位符的内容消失
【发布时间】: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


【解决方案1】:

现在这对我有用...

public class PageBase : Page
{
    public string BodyCssClass
    {
        get;
        set;
    }

    protected override void OnPreInit(EventArgs e)
    {
        MasterPageBase mpbCurrent = this.Master as MasterPageBase;
        mpbCurrent.BodyCssClass = BodyCssClass;

        base.OnLoadComplete(e);
    }
}

【讨论】:

  • 谢谢一百万。敲了我一个小时的头,然后找到了你的答案。想知道为什么它会这样工作......
【解决方案2】:

您是否尝试将 MasterType 指令添加到您的内容页面?像这样:

我还是建议这样做。让我们看看这是否对您有帮助...

http://msdn.microsoft.com/en-us/library/ms228274.aspxhttp://msdn.microsoft.com/en-us/library/c8y19k6h.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多