2009-07-15 6 views
2

comment puis-je changer la valeur de l'attribut css au moment de l'exécution comme tous h1 color = "blue" et tout p color = "green". Si quelqu'un le sait, aidez-moi s'il vous plaît!changer dynamiquement la valeur de l'attribut css dans asp.net

+0

Où voulez-vous faire? en utilisant javascript? dans votre codebehind? en utilisant quelle langue? vb? C#? PS: Les tags les plus pertinents que vous fournissez, plus vous attirerez de personnes possédant les bonnes compétences. – Peter

Répondre

7

Assez facile (je suppose que vous voulez faire de ce côté serveur) - déclarer la position que runat = serveur et lui donner un id:

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

Ensuite, vous pouvez manipuler par programme dans le code derrière comme ceci:

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

Cela rend le code HTML suivant:

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

Vous pouvez faire Ceci est différent et définit les styles dans une feuille de style et modifie la classe dynamiquement au moment de l'exécution.

Update- que vous changez de façon dynamique, ce qui suit pourrait être plus approprié:

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

Je suis sûr que quelqu'un d'autre va poster une réponse à la façon de le faire côté client. :-)

Une autre (peut-être mieux) option pour regarder dans le côté serveur utilise des skins et des thèmes. Lisez le ASP.NET FAQ pour en savoir plus.

1

En JQuery, vous pouvez simplement utiliser

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

Le codebehind ASP.Net ne pas sélecteur pour appliquer à plusieurs css balises html parce que le HTML est généré uniquement une fois que la plupart du code est exécuté. Cela se produit dans l'événement Page_PreRender.

Ce que vous pouvez faire est obtenir le rendu html et effectuer des recherches et/ou des modifications s'il utilise des expressions régulières ou des remplacements de recherche.

Je vous conseille de le faire en utilisant javascript mais en modifiant le rendu html dans l'événement Page_PreRender est quelque chose qui va certainement vous causer des problèmes plus tard et n'est pratiquement pas fait. Je crois qu'il veut dire à tous les articles sur la page

+0

Si vous le faites à plusieurs contrôles sur le serveur, il serait facile de le faire en changeant dynamiquement la peau/thème. – RichardOD

0

Je recommande l'ajout d'un littéral dans l'en-tête juste après vos feuilles de style en cours, puis ajoutez un style en ligne avec le code suivant:

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

J'ai délibérément désactivé le viewstate et visbility donc vous devez déclarer chaque fois que la page Charge ce qu'il faut remplacer {h1Colour} avec et {pColour} en plus de définir le littéral pour qu'il soit visible.

Cela devrait vous aider à vous orienter dans la bonne direction.

+0

Je devrais noter ceci est idéalement adapté à une seule correction de page seule, si vous faites quelque chose globalement j'emploierais probablement des thèmes. –

0

S'il vous plaît essayer le code ci-dessous, je travaillerais pour vous:

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