asp.net 从内容页面更改母版页部分 css

Posted

技术标签:

【中文标题】asp.net 从内容页面更改母版页部分 css【英文标题】:asp.net changing Master Page section css from Content page 【发布时间】: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; 吗? 【参考方案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,我改进了我的答案。

以上是关于asp.net 从内容页面更改母版页部分 css的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 母版页内容页的 ID 全部更改,破坏了基于原始元素 ID 的 CSS?你在跟我开玩笑吗

asp.net 如何从具有嵌套母版页的内容页更改父母版页中的控件

在 asp.net 母版页中更改页脚颜色

母版页中的 ASP.NET CSS 文件

如何在 ASP.net 页面中获取母版页的 Div?

在 Asp.NET 中将 CSS 应用于内容页面