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>
对于一个特定的内容页面,我想将上面 <section>
的类值更改为 class="content-wrapper-full-width main-content clear-fix"
之类的值
如何从内容页面的代码隐藏中访问<section>
的属性并修改其值?
【问题讨论】:
您在内容页面中添加了<%@ MasterType virtualpath="~/YourMasterPage.master" %>
吗?
【参考方案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?你在跟我开玩笑吗