MVC の HTML ヘルパーによって生成された HTML 要素に class 属性を追加するにはどうすればよいですか?
-
22-08-2019 - |
質問
ASP.NET MVC は、HTML ヘルパーを使用して HTML 要素を生成できます。たとえば、 @Html.ActionLink()
, @Html.BeginForm()
等々。
フォーム属性を指定するには、 匿名オブジェクト そしてそのオブジェクトを (この場合は 4 番目) に渡します。 htmlAttributes
パラメータを指定する場合、 id
要素の場合:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new { id = "MyForm"})
しかし、それはどうでしょうか class
属性?明らかにこれは機能しません:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new { class = "myclass"})
C# キーワードに遭遇した後は別のものを期待しているため、ビューがリクエストされたときにランダムな構文エラーがスローされるだけです class
.
私も試してみました:
new { _class = "myclass"}
そして
new { class_ = "myclass"}
しかし、それらもうまくいきませんでした。 アンダースコアはダッシュに置き換えられます.
HTML 要素を手動で記述したり、フォームを <div class="myClass">
, 、しかし、私はそれがどのように行われるのかを知りたいと思っています。
解決
プロパティを持つ匿名型 (または任意の型) を作成するには、 予約されたキーワード C# の名前として、プロパティ名の前にアットマークを付けることができます。 @
:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new { @class = "myclass"})
VB.NETの場合 この構文は次のようになります ドットを使用して達成されます。 .
, 、その言語ではデフォルトの構文です。 全て 匿名型:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })
他のヒント
CSS開発における現在のベストプラクティスは、Webサイト全体にできるだけ広く適用することができます修飾子で、より一般的なセレクタを作成することです。私は、個々のページ要素に別々のスタイルを定義する回避しよう。
<form/>
要素のCSSクラスの目的は、フォーム内の要素のスタイルを制御する場合は、は、クラスを追加することができますASP.NET MVCによって生成されたWebページでは、デフォルトで任意の形式をカプセル化し、既存の<fieldset/>
要素の属性。フォーム上のCSSクラスはほとんど必要ありません。