189

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">できることはわかっていますが、それがどのように行われるのか知りたいと思っています。

4

2 に答える 2

351

C# で名前として予約済みのキーワードを持つプロパティを使用して匿名型 (または任意の型) を作成するには、プロパティ名の前にアットマークを追加できます@

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

VB.NETの場合、この構文はドットを使用して実現.されます。これは、その言語ではすべての匿名型の既定の構文です。

Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })
于 2009-05-18T19:09:36.993 に答える
2

CSS 開発における現在のベスト プラクティスは、Web サイト全体にできるだけ広く適用できる修飾子を使用して、より一般的なセレクターを作成することです。個々のページ要素に個別のスタイルを定義することは避けようとします。

要素の CSS クラスの目的が<form/>フォーム内の要素のスタイルを制御することである場合<fieldset/>、ASP.NET MVC によって生成された Web ページでデフォルトで任意のフォームをカプセル化する既存の要素に class 属性を追加できます。フォームの CSS クラスが必要になることはほとんどありません。

于 2009-06-23T09:52:44.667 に答える