そのため、タイトルはそれ自体が物語っています。
ASP.NET MVCで再利用可能なコンポーネントを作成するには、3つのオプションがあります(私が言及しなかった他のオプションも考えられます)。
部分図:
@Html.Partial(Model.Foo, "SomePartial")
カスタムエディターテンプレート:
@Html.EditorFor(model => model.Foo)
カスタム表示テンプレート:
@Html.DisplayFor(model => model.Foo)
実際のビュー/ 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)
コレクションであることを確認し、各項目の単一の表示をレンダリングするのに十分スマートです(Partialは、明示的なループ)。
DisplayForが「読み取り専用」テンプレートをレンダリングすることも聞いたことがありますが、理解できません-フォームをそこにスローできませんでしたか?
誰か他の理由を教えてもらえますか?3つを比較するリスト/記事はどこかにありますか?