如何在列表的基类属性的属性上@ Html.DisplayNameFor()?

时间:2016-02-24 16:06:29

标签: c# .net asp.net-mvc razor view

public class BaseModel 
{
    public Guid ID;
    public string Name;
    public List<BaseModelChildModel> BaseModelChildModels;
}

public class BaseModelChildModel
{
    public double Value;
    public string Notes;
    public BaseModel BaseModel;
    public ChildModel ChildModel;
}

public class ChildModel
{
    public Guid ID;
    public string Name;
    public int Productivity;
    public bool IsActive;
 }

在cshtml中,

@model BaseModel
<thead>
    <tr>
        <th>@Html.DisplayNameFor()</th>
    </tr>
</thead>

如果@Html.DisplayNameFor()ChildModel.Name显示ChildModel.IsActive包含0个元素大约一半时间的正确名称,该怎么办?BaseModel.BaseModelChildModels (通过local.resx获取的正确显示名称,如果它有所不同)

1 个答案:

答案 0 :(得分:2)

如果您可以将属性更改为IEnumerable<BaseModelChildModel>,那么您应该能够:

@Html.DisplayNameFor(m => m.BaseModelChildModels.Foo)

否则,您可以索引该属性。这里的表达式不是每次实际访问的,它只被评估为获取显示名称。因此,如果列表中没有项目,则索引属性不会导致错误:

@Html.DisplayNameFor(m => m.BaseModelChildModels[0].Foo)