【问题标题】:Using Generic Types with MVC2 Templates使用带有 MVC2 模板的泛型类型
【发布时间】:2010-06-28 22:04:31
【问题描述】:
我有一个泛型类型的模型类。我想创建一个自定义编辑器模板来显示它(并将其放在共享文件夹中)。
我该怎么做?
我不知道如何命名它,以便 MVC2 会通过通用模板来选择它。
此外,我想知道是否有一种方法可以显式指定顶级类应该使用哪个模板(就像您可以使用 UIHint 属性处理属性一样)。有没有办法覆盖根据类名选择模板的功能?
请帮忙。
【问题讨论】:
标签:
asp.net-mvc-2
asp.net-mvc-2-metadata
【解决方案1】:
实现#1最简单的方法是在显示模型时指定模板名称,作为第二个参数:
<%= Html.DisplayFor(m => m.GenericList, "DisplayList")%>
对泛型的处理在 MVC2 中不是很好。源代码说:
// TODO: Make better string names for generic types
所以,当渲染一个列表时,它会寻找一个名为 List`1 的模板来默认渲染它,如果你没有指定另一个名字。
关于第二点,你会做与 #1 相同的事情。渲染项目时指定模板名称或使用 UIHint。