asp.net-mvc – 使用UIHint的ASP.NET MVC 3自定义显示模板 – 是否需要循环?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 使用UIHint的ASP.NET MVC 3自定义显示模板 – 是否需要循环?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我有这样的viewmodel:
public class Myviewmodel
{
   [UIHint("SomeTemplate")]
   public ICollection<Someviewmodel> Submodel { get; set; }
}
@H_404_4@一个带有HTML行的强类型视图,如下所示:

@Html.DisplayFor(model => model.Submodel)
@H_404_4@以及带有如下签名的显示模板:

@model MvcApplication1.Models.Someviewmodel
@H_404_4@我得到一个错误,说“模型项的类型为List< Someviewmodel>但这个字典需要Someviewmodel类型的模型.”.

@H_404_4@这是有道理的,但我希望MVC的内置模板智能会启动,看到它是一个IEnumerable的东西,并努力调用我的模板N次,就像它通常为Html.DisplayFor没有暗示.

@H_404_4@所以看起来[UIHint]覆盖了这个功能

@H_404_4@显然我可以指向另一个接受集合的模板,并调用Html.DisplayForModel(),基本上模拟MVC智能.但我希望避免这种情况.老实说,我宁愿做一个foreach循环而不是那个1行“包装”模板.

@H_404_4@还有更好的想法?

@H_404_4@就像我想说的那样:“嘿MVC,为每个人提供一个模板.但不是使用name-convention来找到模板,这里有一个提示”.

@H_301_25@解决方法
UIHint表示“使用名为XXX的模板渲染此模型”.所以你必须声明你的displaytemplate“SomeTemplate”
@model MvcApplication1.Models.ICollection<Someviewmodel>
@H_404_4@并在foreach中显示每个项目.

猜你在找的asp.Net相关文章