我有一个 ViewModel 扩展了一个众所周知的基类,以允许共享视图读取公共属性。这是设计使然。
我还有一些页面显示模型中包含的实体列表的详细信息。以下代码提供了一个示例:
public abstract class AbstractViewModel {
public Exception lastError; //If not null triggers a big warning
}
public class Cat{
[Display(...)]
public string Name;
}
public class CatListViewModel: AbstractViewModel {
public IEnumerable<Cat> cats;
}
现在我的局部视图需要使用常见的 MVC 方式显示猫的列表
@model Org.Zighinetto.CatListViewModel
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.Cats.Name) //Doesn't work!!
</th>
</tr>
@foreach (var item in Model.Cats)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
</tr>
}
</table>
不幸的是,我不能使用DisplayNameFor
集合作为参数
问题是
IEnumerable<Cat>
鉴于上述数据模型,并且鉴于设计原因我不想将模型性质更改为...
当表达式涉及集合时,尤其是当该集合为空时,如何将作为Cat
类的属性的显示名称绑定到方法或任何等效项?DisplayNameFor
否则问,如何修复上述编译错误?DisplayNameFor
在这种情况下,正确的语法是什么?