46 votes

Comment modifier le style CSS d'une div à l'aide de C # dans .NET

J'essaie de saisir l'identifiant d'une div dans le code situé derrière (C #) et de définir des css dessus. Puis-je le récupérer depuis le DOM ou dois-je utiliser une sorte de contrôle?

 <div id="formSpinner">
    <img src="images/spinner.gif" />
    <p>Saving...</p>
</div>
 

75voto

Rob Points 24505

Ajouter l' runat="server" attribuent de façon à avoir:

<div id="formSpinner" runat="server">
    <img src="images/spinner.gif">
    <p>Saving...</p>
</div>

De cette façon, vous pouvez accéder à l'attribut de classe à l'aide de:

formSpinner.Attributes["class"] = "classOfYourChoice";

Il est également intéressant de mentionner que l' asp:Panel de contrôle est pratiquement synonyme (au moins autant que le rendu du balisage est concerné) avec div, de sorte que vous pourriez aussi le faire:

<asp:Panel id="formSpinner" runat="server">
    <img src="images/spinner.gif">
    <p>Saving...</p>
</asp:Panel>

Ce qui vous permet ensuite d'écrire:

formSpinner.CssClass = "classOfYourChoice";

Cela vous donne plus défini l'accès à la propriété et il ya d'autres qui peuvent, ou non, être de l'utiliser pour vous.

13voto

tvanfosson Points 268301

Assurez-vous que votre div est défini sur runat = "server", puis faites simplement référence à celui-ci dans le code-behind et définissez l'attribut "class".

 <div runat="server" id="formSpinner">
   ...content...
</div>
 

Code-behind

 formSpinner.Attributes["class"] = "class-name";
 

6voto

Joel Coehoorn Points 190579

Cette question me rend nerveux. Il indique que peut-être vous ne comprenez pas comment à l'aide de code côté serveur aura un impact sur vous êtes la page du DOM de l'état.

Chaque fois que vous exécutez le code côté serveur l'ensemble de la page est reconstruit à partir de zéro. Ceci a plusieurs implications:

  • Un formulaire est soumis par le client vers le serveur web. C'est sur le plus lent de l'action que d'un navigateur web peut prendre, en particulier dans ASP.Net lorsque le formulaire peut être rempli à l'aide de champs supplémentaires (ie: ViewState). Le faire trop souvent pour des motifs frivoles fera de votre application ne semble être lent, même si tout le reste est agréable et dynamique.
  • Il ajoute de la charge de votre serveur, en termes de bande passante (en amont et en aval) et de la mémoire et du PROCESSEUR. Tout impliqués dans la reconstruction de votre page devra arriver de nouveau. Si il y a des contrôles dynamiques sur la page, n'oubliez pas de les créer.
  • Tout ce que vous avez fait pour les DOM depuis la dernière demande est perdu, à moins que vous n'oubliez pas de le faire à nouveau pour cette demande. Votre page de DOM est réinitialisé.

Si vous pouvez sortir avec elle, vous pouvez pousser vers le bas pour javascript et d'éviter la publication. Peut-être utiliser un XmlHttpRequest() appel à déclencher côté serveur d'action dont vous avez besoin.

3voto

Jeremy Frey Points 1463

Ajoutez l'attribut runat = "server" à la balise, puis vous pourrez le référencer à partir de codebehind.

3voto

StingyJack Points 10956

Ajouter runat à l'élément dans le balisage

 <div id="formSpinner" runat="server">
    <img src="images/spinner.gif">
    <p>Saving...</p>
</div
 

Vous pouvez ensuite accéder aux attributs de classe du contrôle à l'aide de formSpinner.Attributes ("classe") Il s'agira uniquement d'une chaîne, mais vous devriez pouvoir l'éditer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X