加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用UIHint的ASP.NET MVC 3自定义显示模板 – 是

发布时间:2020-12-16 04:36:19 所属栏目:asp.Net 来源:网络整理
导读:如果我有这样的ViewModel: public class MyViewModel{ [UIHint("SomeTemplate")] public ICollectionSomeViewModel Submodel { get; set; }} 一个带有HTML行的强类型视图,如下所示: @Html.DisplayFor(model = model.Submodel) 以及带有如下签名的显示模板
如果我有这样的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的东西,并努力调用我的模板N次,就像它通常为Html.DisplayFor没有暗示.

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

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

还有更好的想法?

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

解决方法

UIHint表示“使用名为XXX的模板渲染此模型”.所以你必须声明你的displaytemplate“SomeTemplate”
@model MvcApplication1.Models.ICollection<SomeViewModel>

并在foreach中显示每个项目.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读