2008-08-05 4 views
16

Ich möchte speziell den Stil background-color zu dem <body> Tag einer Masterseite hinzufügen, aus dem Code hinter (C#) einer Inhaltsseite, die diese Masterseite verwendet.Wie kann ich den Hintergrund einer Masterpage anhand des Codes hinter einer Inhaltsseite ändern?

Ich habe verschiedene Inhaltsseiten, die die Masterseite abhängig davon, welche Inhaltsseite geladen wird, unterschiedlich gestalten muss, damit die Musterseite mit dem Thema der Inhaltsseite übereinstimmt.

Ich habe eine Lösung unter:

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

Innerhalb der Seitenladefunktion der Content-Seite:


Ich bin für etwas mehr wie suchen. Aber ich kann die obige Linie nicht zur Arbeit bringen. Ich muss nur das background-color für das <body> Tag der Seite ändern.

+0

Hier ist eine bessere Lösung http://stackoverflow.com/questions/21476068/asp-net-changing-master-page-section-css-from-content-page –

Antwort

8

Was ich für den speziellen Fall tun würde, ist:

i. Definieren Sie den Körper als ein serverseitiges Steuerelement.

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

ii. Registrieren Sie die MasterPage in Ihrer Inhalts-aspx-Seite mit folgendem Register:

<% MasterPageFile="..." %> 

iii. Auf der Content-Seite können Sie jetzt einfach

Master.FindControl("masterpageBody") 

verwenden und Zugriff auf die Steuerung haben. Jetzt können Sie alle Eigenschaften/Stil ändern, die Sie mögen!

+0

Hätten Sie etwas dagegen Master.FindControl zu klären ("masterpageBody") und füge bitte ein Beispiel hinzu, um css class hinzuzufügen. –

0

Ich glaube, Sie sprechen über ein Content-Management-System. Die Art, wie ich mit dieser Situation in der Vergangenheit delt habe, ist entweder zu:

  1. eine Seite/content erlaubt eine zusätzliche individuelle Sheet oder
  2. erlaubt eine Seite/Inhalt zu definieren Tags Inline-Stil
definieren
1

Das ist, was ich kam mit:

In der Seitenladefunktion:

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

Wo

default_body = die ID des Body-Tag.