2009-07-15 6 views
2

Wie kann ich den css Attribut Wert zur Laufzeit wie alle H1 Farbe = "blau" und alle p Farbe = "grün" ändern. Wenn jemand es weiß, bitte hilf mir!dynamisch ändern css Attribut Wert in asp.net

+0

Wo tun Sie dies tun wollen? Javascript verwenden? in deinem Codebehind? mit welcher Sprache? vb? C#? PS: Je mehr relevante Tags Sie liefern, desto mehr Leute mit den richtigen Fähigkeiten werden Sie anziehen. – Peter

Antwort

7

Ziemlich einfach (ich nehme an, Sie diese Server-Seite tun wollen) - erklären die Überschrift als runat = Server und geben Sie ihm eine ID:

<h1 runat="server" id="someHeading">Blah</h1> 

Dann können Sie programmatisch im Code manipulieren hinter so wie:

someHeading.Style.Add("color", "blue"); 

Dies wird den folgenden HTML-render:

<h1 id="someHeading" style="color:blue;">Blah</h1> 

vielleicht möchten Sie tun Dies unterscheidet und definiert die Stile in einem Stylesheet und ändert die Klasse dynamisch zur Laufzeit.

Update-, wie Sie es dynamisch ändern, könnte die folgende sinnvoller sein:

someHeading.Style["color"] = "red"; 

Ich bin sicher, dass jemand anderes eine Antwort mit gebucht werden, wie es zu tun Client-Seite. :-)

Eine andere (vielleicht bessere) Option, um in Server-Seite zu schauen, verwendet Skins und Themen. Lesen Sie die ASP.NET FAQ über diese, um mehr zu erfahren.

1

In JQuery können Sie einfach

$('h1').css("color","blue"); 

Die ASP.Net Code-Behind verwendet keine Selektor CSS mehrere HTML-Tags anwenden müssen, weil die HTML nur einmal die meisten der Code generiert wird ausgeführt. Dies geschieht im Page_PreRender-Ereignis.

Was Sie tun könnten, ist das gerenderte HTML zu bekommen und einige Suchen und/oder Modifikationen durchzuführen, ob es reguläre Ausdrücke oder einfache Suche ersetzt.

Ich würde Ihnen raten, dies mit JavaScript zu tun, obwohl die Änderung des gerenderten HTML im Page_PreRender-Ereignis etwas ist, was Sie später definitiv Probleme bereiten wird und grundsätzlich nicht gemacht wird.

+0

Wenn Sie es mit mehreren Steuerelementen auf dem Server tun, wäre es einfach, dies zu tun, indem Sie das Skin/Theme dynamisch ändern. – RichardOD

0

Ich glaube, er bedeutet zu jedem Punkt auf der Seite. Ich würde empfehlen, eine wörtliche in den Header nur nach der aktuellen Stylesheets hinzufügen, dann einen Inline-Stil mit dem folgenden Code hinzufügen:

<asp:Literal ID="litInlineStyles" runat="server" EnableViewState="false" Visible="false"> 
    <style type="text/css"> 
    h1 
    { 
    color: {h1Colour} 
    } 
    p 
    { 
    color: {pColour} 
    } 
    </style> 
</asp:Literal> 

ich absichtlich den Ansichtszustand und visbility deaktiviert haben, so dass Sie jedes Mal die Seite deklarieren lädt, was ersetzt werden soll {h1Colour} mit und {pColour} und setzt das Literal auf sichtbar.

Das sollte Ihnen helfen, in die richtige Richtung zu zeigen.

+0

Ich sollte beachten, dies ist ideal für eine einzige Seite nur beheben, wenn Sie etwas global tun würde ich wahrscheinlich Themen verwenden. –

0

Bitte versuchen Sie folgenden Code, würde ich für Sie arbeiten:

someHeading.Attributes.CssStyle.Add(HtmlTextWriterStyle.Color, "red");