MVC の HTML ヘルパーによって生成された HTML 要素に class 属性を追加するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/879266

  •  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クラスはほとんど必要ありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top