我很喜欢 MVC 2.整个过程非常适合网络.
然而,有一项功能,我无法哄骗这个Html.DisplayFor()功能:
<@ Page Inherits="ViewPage<IEnumerable<Foo>>">
<% foreach(var item in Model) { %>
<%: Html.DisplayFor(item.BarBaz) %>
<% } %>
Run Code Online (Sandbox Code Playgroud)
我需要能够使用DisplayTemplate来获取此值.有没有办法做到这一点?
我有什么看起来(对我来说)是一个奇怪的问题......
我为SelectListItem创建了一个简单的编辑器模板(〜/ Views/Shared/EditorTemplates文件夹中的SelectListItem.cshtml),例如:
<ul class="select-list-item cell-15 col-3 omega clearfix">
@Html.EditorFor(c => c.Categories)
</ul>
Run Code Online (Sandbox Code Playgroud)
其中c.Categories是IEnumerable
这工作正常,但我想要另一个模板来呈现具有略微不同标记的集合,因此我将编辑器模板复制并重命名为,例如,"CategoryIcons.cshtm"并调用如下:
<ul class="select-list-item cell-15 col-3 omega clearfix">
@Html.EditorFor(c => c.Categories, "CategoryIcons")
</ul>
Run Code Online (Sandbox Code Playgroud)
简而言之,唯一的区别是我正在指定一个命名的编辑器模板.
当我打开页面时,我现在收到以下错误:
传递到字典中的模型项的类型为'System.Collections.Generic.List`1 [System.Web.Mvc.SelectListItem]',但此字典需要类型为'System.Web.Mvc.SelectListItem'的模型项
两个模板ID中的模板模型声明:
@model System.Web.Mvc.SelectListItem
Run Code Online (Sandbox Code Playgroud)
我不明白为什么默认模板工作而命名模板不工作.任何帮助,将不胜感激.
谢谢.