web-dev-qa-db-fra.com

Comment ajouter un attribut de classe à un élément HTML généré par les assistants HTML de MVC?

ASP.NET MVC peut générer des éléments HTML à l'aide de HTML Helpers, par exemple @Html.ActionLink(), @Html.BeginForm(), etc.

Je sais que je peux spécifier des attributs de formulaire en créant un objet anonyme et en transmettant cet objet au paramètre (le quatrième dans ce cas) htmlAttributes 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 générer des erreurs de syntaxe aléatoires lorsque ma vue est demandée, car il attend autre chose après avoir rencontré le mot clé C # class.

J'ai aussi essayé:

new { _class = "myclass"}

et

new { class_ = "myclass"}

Mais ils ne fonctionnaient pas non plus, car les les soulignements sont remplacés 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 cela est censé être fait.

187
Adrian Grigore

Pour créer un type anonyme (ou un type quelconque) avec une propriété dont le nom est mot clé réservé en C #, vous pouvez ajouter le nom de la propriété avec un signe arobase, @:

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

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

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

La meilleure pratique actuelle en matière de développement CSS consiste à créer des sélecteurs plus généraux avec des modificateurs pouvant être appliqués aussi largement que possible sur l'ensemble du site Web. J'essayerais d'éviter de définir des styles distincts pour des éléments de page individuels.

Si le but de la classe CSS sur le <form/> élément sert à contrôler le style des éléments du formulaire, vous pouvez ajouter l'attribut de classe existant <fieldset/> élément qui encapsule tout formulaire 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
Tim