views:

1951

answers:

5

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 have different colors depending on which content page is loaded in such that the master page matches the content page's theme.

I have a solution below:

A: 

I believe you are talking about a content management system. The way I have delt with this situation in the past is to either:

  1. Allow a page/content to define an extra custom stylesheet or
  2. Allow a page/content to define inline style tags
GateKiller
A: 

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.

Bryan Denny
A: 

Could you please provide more background code (not background color) to help us answer the question?

GateKiller
+4  A: 

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!

Adhip Gupta
A: 

Thanks Adhip, 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.

Bryan Denny