asp.net changing Master Page section css from Content page

馋奶兔 提交于 2019-12-07 22:48:18

问题


I have the following code in my master page:

<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>

For one specific content page I would like to change the class value of the <section> above to something like class="content-wrapper-full-width main-content clear-fix"

How can I access the <section>'s attributes from codebehind of the content page and modify its value?


回答1:


You can create a public property in your master which gets/sets the class:

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

Now you can cast the master to the correct type and access this property in your 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";
}

Side-note: you can use the @Master directive to use the Master property in your content-page strongly typed. Then you have compile time safety and you don't need to cast it to the actual type:

In your content-page(replace with actual type):

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

Now this works directly:

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



回答2:


I think you could use the FindControl() method from code behind with something like :

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


来源:https://stackoverflow.com/questions/21476068/asp-net-changing-master-page-section-css-from-content-page

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!