【问题标题】:asp.net changing Master Page section css from Content pageasp.net 从内容页面更改母版页部分 css
【发布时间】:2014-02-23 21:52:35
【问题描述】:

我的母版页中有以下代码:

<div id="body" runat="server">
        <asp:ContentPlaceHolder runat="server" ID="FeaturedContent" />
        <section runat="server" id="sectionMainContent" class="content-wrapper main-content clear-fix">
            <asp:ContentPlaceHolder runat="server" ID="MainContent" />
        </section>
    </div>

对于一个特定的内容页面,我想将上面 &lt;section&gt; 的类值更改为 class="content-wrapper-full-width main-content clear-fix" 之类的值

如何从内容页面的代码隐藏中访问&lt;section&gt; 的属性并修改其值?

【问题讨论】:

  • 您在内容页面中添加了&lt;%@ MasterType virtualpath="~/YourMasterPage.master" %&gt; 吗?

标签: c# asp.net master-pages


【解决方案1】:

您可以在 master 中创建一个公共属性来获取/设置类:

// sectionMainContent is a HtmlGenericControl in codebehind
public String SectionCssClass
{
    get { return sectionMainContent.Attributes["class"]; }
    set { sectionMainContent.Attributes["class"] = value; }
}

现在您可以将 master 转换为正确的类型并在您的 contentpage 中访问此属性:

protected void Page_Init(object sender, EventArgs e)
{ 
    SiteMaster master = this.Master as SiteMaster; // replace with correct type
    if(master != null)
        master.SectionCssClass = "content-wrapper-full-width main-content clear-fix";
}

旁注:您可以使用@Master directive 在您的内容页面中使用Master 属性强类型。然后你就有了编译时安全,你不需要将它转换为实际类型:

在您的内容页面中(替换为实际类型):

<%@ MasterType  VirtualPath="~/Site.Master"%>

现在可以直接使用了:

protected void Page_Init(object sender, EventArgs e)
{
    this.Master.SectionCssClass = "content-wrapper-full-width main-content clear-fix";
}

【讨论】:

    【解决方案2】:

    我认为您可以使用后面代码中的 FindControl() method 和类似的东西:

    ((HtmlGenericControl)Master.FindControl("FeaturedContent")).attributes["class"] = "content-wrapper-full-width main-content clear-fix";
    

    【讨论】:

    • 这也有效,但只需将 HtmlElement 更改为 HtmlGenericControl
    • 您还必须使用attributes["class"],因为HtmGnericControl 没有CssClass 属性。 (HtmlElement是一个winforms控件)
    • 感谢您的 cmets,我改进了我的答案。
    猜你喜欢
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多