したがって、タイトルはそれ自体で語るべきです。
ASP.NET MVC で再利用可能なコンポーネントを作成するには、次の 3 つのオプションがあります (ここで言及していない他のオプションもある可能性があります)。
部分図:
@Html.Partial(Model.Foo, "SomePartial")
カスタム エディター テンプレート:
@Html.EditorFor(model => model.Foo)
カスタム表示テンプレート:
@Html.DisplayFor(model => model.Foo)
実際の View/HTML に関しては、3 つの実装はすべて同じです。
@model WebApplications.Models.FooObject
<!-- Bunch of HTML -->
それで、私の質問は - いつ、どのように 3 つのうちのどれを使用するかを決定するのですか?
私が本当に探しているのは、テンプレートを作成する前に自問する質問のリストです。その回答を使用して、使用するテンプレートを決定できます。
EditorFor/DisplayFor で私が見つけた 2 つの点は次のとおりです。
HTML ヘルパーをレンダリングするときにモデル階層を尊重します (たとえば、「Foo」モデルに「Bar」オブジェクトがある場合、「Bar」の HTML 要素は「Foo.Bar.ElementName」でレンダリングされますが、パーシャルには「 ElementName")。
より堅牢です。たとえば
List<T>
、ViewModel に何かがある場合は、 を使用できます。MVC は、@Html.DisplayFor(model => model.CollectionOfFoo)
それがコレクションであることを認識し、各アイテムの単一の表示をレンダリングするのに十分スマートです (パーシャルでは、明示的な for が必要になるのとは対照的に)。ループ)。
DisplayFor が「読み取り専用」テンプレートをレンダリングすると聞いたことがありますが、それは理解できません - そこにフォームを投げることはできませんか?
誰かが他の理由を教えてもらえますか?3つを比較するリスト/記事はどこかにありますか?