次のような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、これらの人たちのそれぞれのテンプレートをレンダリングしてください。しかし、名前規則を使用してテンプレートを見つける代わりに、ここにヒントがあります」.