在ASP.NET MVC razor View详细信息页面中,我可以使用如下模型:
@model MyClass
然后执行以下操作:
@html.DisplayNameFor(m => m.MyProperty)
但是在列表页面中,我有:
@model IEnumerable<MyClass>
相同的@html代码有效。我不指望它,因为MyProperty不是IEnumerable的属性。 IEnumerable是“特殊的”,因为剃刀视图引擎知道查看类型参数MyClass的属性,而不是IEnumerable本身的属性吗?
答案 0 :(得分:1)
IEnumerable并不特别。如果你使用@html.DisplayFor(m =&gt; m.MyProperty),你会得到一个错误,你的IEnumerable列表不包含“MyProperty”的定义。您必须使用linq查询来选择一个MyClass对象或对模型执行ForEach()。
@html.DisplayNameFor IS的特殊之处在于它具有IEnumerable模型的重载。它知道你真的只是在属性的显示名称之后,因为你有一个强类型列表,它知道如何找到显示名称。这是一个方便的功能!