【发布时间】:2011-08-30 22:16:19
【问题描述】:
如果我有这样的 ViewModel:
public class MyViewModel
{
[UIHint("SomeTemplate")]
public ICollection<SomeViewModel> Submodel { get; set; }
}
还有一个强类型的View,上面有一行这样的HTML:
@Html.DisplayFor(model => model.Submodel)
还有一个带有如下签名的显示模板:
@model MvcApplication1.Models.SomeViewModel
我收到一条错误消息,提示“模型项的类型为 List<SomeViewModel>,但此字典需要类型为 SomeViewModel 的模型。”。
这是有道理的,但我希望 MVC 的内置模板智能能够发挥作用,看到它是一个 IEnumerable 的东西,并计算出调用我的模板 N 次,就像它通常那样Html.DisplayFor 没有提示。
所以看起来[UIHint] 覆盖了该功能?
显然,我可以指向另一个接受集合的模板,并调用Html.DisplayForModel(),基本上是在模拟 MVC 智能。但我希望避免这种情况。老实说,我宁愿做一个 foreach 循环,也不愿拥有 1 行“包装”模板。
有更好的想法吗?
就像我想说:“嘿 MVC,为这些人中的每个人渲染一个模板。但不是使用名称约定来查找模板,这里有一个提示”。
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 razor data-annotations display-templates