How can I change the background of a masterpage from the code behind of a content page?

13,380

Solution 1

What I would do for the particular case is:

i. Define the body as a server side control

<body runat="server" id="masterpageBody">

ii. In your content aspx page, register the MasterPage with the register:

<% MasterPageFile="..." %>

iii. In the Content Page, you can now simply use

Master.FindControl("masterpageBody")

and have access to the control. Now, you can change whatever properties/style that you like!

Solution 2

This is what I came up with:

In the page load function:

HtmlGenericControl body = (HtmlGenericControl)Master.FindControl("default_body");
body.Style.Add(HtmlTextWriterStyle.BackgroundColor, "#2E6095");

Where

default_body = the id of the body tag.

Share:
13,380
Bryan Denny
Author by

Bryan Denny

I am a senior web developer who specializes in .NET, C#, SQL, MVC, Web Forms, Web API and WCF. I design and maintain large web applications from the UI front-end to the code and database back-end. I also have experience developing and publishing Java Android applications. For more information, check out my resume and portfolio website: http://www.bryandenny.com

Updated on June 06, 2022

Comments

  • Bryan Denny
    Bryan Denny almost 2 years

    I specifically want to add the style of background-color to the <body> tag of a master page, from the code behind (C#) of a content page that uses that master page.

    I have different content pages that need to make the master page has different colors depending on which content page is loaded, so that the master page matches the content page's theme.

    I have a solution below:


    I'm looking for something more like:

    Master.Attributes.Add("style", "background-color: 2e6095");
    

    Inside of the page load function of the content page. But I can't get the above line to work. I only need to change the background-color for the <body> tag of the page.