如何在列表的基类属性的属性上@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.Name
或ChildModel.IsActive
的正确名称,因为BaseModel.BaseModelChildModels
包含大约一半的时间包含 0 个元素?(通过local.resx
获得的正确显示名称,如果它有区别)
如果可以将属性更改为 IEnumerable<BaseModelChildModel>
,那么您应该能够执行以下操作:
@Html.DisplayNameFor(m => m.BaseModelChildModels.Foo)
否则,您可以为该属性编制索引。此处的表达式并非每个实际访问,它只是为了获取显示名称而计算的。因此,如果列表中没有项,则索引属性不会导致错误,就像传统上那样:
@Html.DisplayNameFor(m => m.BaseModelChildModels[0].Foo)