次のようなViewModelがある場合:
public class MyViewModel
{
[UIHint("SomeTemplate")]
public ICollection<SomeViewModel> Submodel { get; set; }
}
そして、次のような HTML の行を持つ厳密に型指定されたビュー:
@Html.DisplayFor(model => model.Submodel)
そして、このような署名を持つ表示テンプレート:
@model MvcApplication1.Models.SomeViewModel
「モデル項目のタイプは ですList<SomeViewModel>が、このディクショナリにはタイプのモデルが必要SomeViewModelです。」というエラーが表示されます。
これは理にかなっていますが、MVC の組み込みのテンプレート スマートが作動することを望んでいましIEnumerableたHtml.DisplayFor。
それで、[UIHint]その機能をオーバーライドするように見えますか?
Html.DisplayForModel()明らかに、コレクションを受け入れて を呼び出し、基本的に MVC スマートをエミュレートする別のテンプレートを指すことができます。しかし、私はそれを避けることを望んでいます。正直なところ、その1行の「ラッパー」テンプレートを使用するよりも、foreachループを実行したいと思います。
より良いアイデアはありますか?
私が言いたいのは、「ねえ、MVC、これらの人たちのそれぞれのテンプレートをレンダリングしてください。しかし、名前規則を使用してテンプレートを見つける代わりに、ここにヒントがあります」.