さて、MVCのEditorForModel
について発見したばかりで、各プロパティでEditorFor
の代わりにこれをいつ使用する必要があるのか知りたいですか?そして、強く型付けされたビューを追加するときに、これを使用せず、すべてのプロパティにEditorFor
を構築するのはなぜですか?
私はこれに遅れています...しかし、情報をありがとう!
受け入れられた回答はリンクのみの回答であり(そして削除されました)、私は実際に Brad Wilson のブログから派生した質問に答えると思いました: ASP.NET MVC 2テンプレート、パート1:はじめに 。
モデル式は、現在のモデルを操作する単純なヘルパーです。行DisplayForModel()はDisplayFor(model => model)と同等です。
TL; DREditorFor(model => model)
とEditorForModel()
についても同じ考え方が成り立ちます。これらのヘルパーメソッドは同じことを実現します。 EditorForModel()
は、モデル式が@model
ビューに渡されました。
次のモデルと例を見てください。
public class Person
{
public string Name {get; set;}
public Address MailingAddress {get; set;}
}
public class Address
{
public String Street {get; set;}
public String City {get; set;}
public String State {get; set;}
}
Create.cshtml
:
@model MyNamespace.Models.Person
/* So, you need an Editor for the Person model? */
@Html.EditorForModel()
/*the above is equivalent to @Html.EditorFor(model => model) */
/* you need to specify the Address property that the editor accepts? */
@Html.EditorFor(model => model.MailingAddress)
可能な限り使用する必要がありますが、場合によっては、個々のHtml.EditorFor
をカスタマイズする必要があります。
ビルトインテンプレートがそれを使用しない理由については、それは主にそれらが一般的にばかげているからですが、私が思い出すと、それらは各Html.EditorFor
の周りに要素(テーブル行など)をラップする必要があるためです。
@ Html.EditorForModel()??そして、あなた自身の見解を書く面白さをあきらめますか? 笑顔
楽しいことに加えて、習慣としてそうすることはかなり危険です。次の一般的なシナリオを考えてみます。顧客テーブルのデータベースにIsMaleと言うブール変数があります。もちろん、デフォルトのバージョン(チェックボックス付きのIsMale)は必要ありません。おそらく、{select、Options ....、/ select}タグなど、もう少し親しみやすいものを望んでいますね。ここで、ビューが実際に動き始めます。それがカスタマイズです。すべてのビューは少し異なります。あなたはRAZORエンジンを持っています、それを最大限に活用してください!ビューでは、何かをオーバーライドしたり、独自のHTMLコードのチャンク全体を手動で入力したりすることもできます。