0

在 ASP.NET MVC razor 查看详细信息页面中,我可以有一个模型,如:

@model MyClass

然后执行以下操作:

@html.DisplayNameFor(m => m.MyProperty)

但是在列表页面中,我有:

@model IEnumerable<MyClass>

相同的@html 代码有效。我不希望它,因为 MyProperty 不是 IEnumerable 的属性。IEnumerable 是否“特殊”,因为 razor 视图引擎知道查看类型参数 MyClass 的属性,而不是 IEnumerable 本身的属性?

4

1 回答 1

1

IEnumerable 并不特别。如果您要使用@html.DisplayFor(m => m.MyProperty),您会收到一个错误,即您的 IEnumerable 列表不包含“MyProperty”的定义。您必须使用 linq 查询来选择一个 MyClass 对象或对您的模型执行 ForEach() 。

@html.DisplayNameFor 的特殊之处在于它对 IEnumerable 模型具有重载。它知道您实际上只是在属性的显示名称之后,并且由于您有一个强类型列表,它知道如何找到显示名称。这是一个方便的功能!

于 2013-01-18T04:31:23.367 回答