Comment puis-je ajouter un attribut de classe à un élément HTML généré par les Helpers HTML de MVC?

ASP.NET MVC peut générer des éléments HTML en utilisant des Helpers HTML, par exemple @Html.ActionLink() , @Html.BeginForm() et ainsi de suite.

je sais que je peux spécifier des attributs de forme en créant un objet anonyme et passer cet objet pour le (quatrième dans ce cas) htmlAttributes paramètre où spécifier un id pour l'élément:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { id = "MyForm"})

mais qu'en est-il de l'attribut class ? Évidemment, cela ne fonctionne pas:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { class = "myclass"})

comme cela ne fait que lancer des erreurs de syntaxe aléatoires quand ma vue est demandée, parce qu'elle attend quelque chose d'autre après avoir rencontré le mot-clé C# class .

j'ai aussi essayé:

new { _class = "myclass"}

et

new { class_ = "myclass"}

mais ils n'ont pas non plus fonctionné, comme le souligne obtenir remplacé par des tirets .

je sais que je peux tout aussi bien écrire les éléments HTML à la main ou envelopper le formulaire dans un <div class="myClass"> , mais je serais toujours intéressé de savoir comment il est censé être fait.

185
demandé sur Community 2009-05-18 23:06:46

2 réponses

afin de créer un type anonyme (ou n'importe quel type) avec une propriété qui a un mot-clé réservé comme son nom en C#, vous pouvez prepend le nom de la propriété avec un signe at, @ :

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { @class = "myclass"})

pour VB.NET cette syntaxe serait accomplie en utilisant le point, . , qui dans cette langue est la syntaxe par défaut pour all anonymous types :

Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })
346
répondu Community 2017-05-23 11:54:53

la meilleure pratique actuelle dans le développement CSS est de créer des sélecteurs plus généraux avec des modificateurs qui peuvent être appliqués aussi largement que possible dans tout le site web. J'essaierais d'éviter de définir des styles séparés pour des éléments de page individuels.

si le but de la classe CSS sur l'élément <form/> est de contrôler le style des éléments dans la forme, vous pouvez ajouter l'attribut de classe existant <fieldset/> élément qui encapsule n'importe quelle forme par défaut dans les pages web générées par ASP.NET MVC. Une classe CSS sur le formulaire est rarement nécessaire.

3
répondu Tim 2009-06-23 09:52:44