有没有办法选择DisplayFor渲染的内容?

时间:2010-12-23 12:49:38

标签: asp.net-mvc

考虑以下代码:

<%: Html.DisplayFor(model => model.SomeBoolean)%>

<%: Html.DisplayFor(model => model.SomeInt)%>

第一个绑定到布尔值,这将呈现禁用的下拉列表。 第二个绑定到一个int,这将简单地将结果呈现为文本。

我希望int也能渲染一个下拉列表。

我有什么选择?

非常感谢。

1 个答案:

答案 0 :(得分:1)

MVC有一组默认的编辑器和显示模板。您可以通过在控制器的视图文件夹中创建DisplayTemplates文件夹来创建自己的文件夹,也可以通过将其放在共享文件夹的DisplayTemplates文件夹中来定义更全局的模板。

对于系统类型,请使用实际的类型名称而不是特定于语言的快捷方式(例如,对于int,请为Razor调用模板Int32.ascxInt32.cshtml

你可以通过使用重载来进一步指定模板(我知道这对于EditorFor是可能的,我猜它也适用于DisplayFor),或者如果你有一个特定的属性,你想要使用不同的模板,您可以使用数据注释。

同样的技术也适用于复杂类型。