ASP.NET MVCは、HTMLヘルパーを使用して、@Html.ActionLink()
、@Html.BeginForm()
などのHTML要素を生成できます。
匿名オブジェクト を作成してフォーム属性を指定し、そのオブジェクトを(この場合は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の場合 この構文は次のようになります ドット.
を使用して実現されます。この言語では、 all匿名型 :
Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })
CSS開発の現在のベストプラクティスは、Webサイト全体に可能な限り広く適用できる修飾子を持つより一般的なセレクターを作成することです。個々のページ要素に個別のスタイルを定義しないようにします。
<form/>
要素のCSSクラスの目的がフォーム内の要素のスタイルを制御することである場合、生成されるWebページのデフォルトでフォームをカプセル化する既存の<fieldset/>
要素にクラス属性を追加できます。 ASP.NET MVCによる。フォーム上のCSSクラスが必要になることはめったにありません。