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

本文关键字:属性 @Html DisplayNameFor 基类 列表 | 更新日期: 2023-09-27 18:36:05

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.NameChildModel.IsActive的正确名称,因为BaseModel.BaseModelChildModels包含大约一半的时间包含 0 个元素?(通过local.resx获得的正确显示名称,如果它有区别)

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

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

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

否则,您可以为该属性编制索引。此处的表达式并非每个实际访问,它只是为了获取显示名称而计算的。因此,如果列表中没有项,则索引属性不会导致错误,就像传统上那样:

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