RPM*_*984 8 asp.net-mvc data-annotations razor display-templates asp.net-mvc-3
如果我有这样的ViewModel:
public class MyViewModel
{
[UIHint("SomeTemplate")]
public ICollection<SomeViewModel> Submodel { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
一个带有一行HTML 的强类型视图,如下所示:
@Html.DisplayFor(model => model.Submodel)
Run Code Online (Sandbox Code Playgroud)
以及带有如下签名的显示模板:
@model MvcApplication1.Models.SomeViewModel
Run Code Online (Sandbox Code Playgroud)
我得到一个错误说"模型项是类型的,List<SomeViewModel>
但这个字典需要一个类型的模型SomeViewModel
.".
这是有道理的,但我希望MVC的内置模板智能会启动,看到它是一个IEnumerable
东西,并努力调用我的模板N次,就像Html.DisplayFor
没有提示通常做的那样.
所以它看起来像[UIHint]
覆盖了那个功能?
显然,我可以指向另一个接受集合的模板,并调用Html.DisplayForModel()
,基本上模拟MVC智能.但我希望避免这种情况.老实说,我宁愿做一个foreach循环而不是那个1行"包装"模板.
有更好的想法吗?
这就像我想说的那样:"嘿MVC,为这些家伙中的每一个人渲染一个模板.但是不是使用name-convention来找到模板,这里有一个提示".
UIHint表示"使用名为XXX的模板渲染此模型".所以你必须声明你的displaytemplate"SomeTemplate"
@model MvcApplication1.Models.ICollection<SomeViewModel>
Run Code Online (Sandbox Code Playgroud)
并在foreach中显示每个项目.
归档时间: |
|
查看次数: |
7533 次 |
最近记录: |