在模型的嵌套属性上使用DisplayFor

时间:2014-07-31 14:16:34

标签: c# asp.net-mvc

视图模型:

public class LiquiditySummariesViewModel
{
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
    public DateTime ValueDate { get; set; }

    public List<LiquidityA1B5SummariesModel> ControlGroupsSummaries { get; set; }
}

public class LiquidityA1B5SummariesModel
{
    [DisplayFormat(DataFormatString = "{0:n2}")]
    public decimal Balance { get; set; }
    ...
}

我试图在视图中访问余额

 @foreach (var item in Model.ControlGroupsSummaries)
 {
        <tr>
            <td>
                 @Html.DisplayFor(p=>p.ControlGroupsSummaries.Select(z=>z.Balance))
            </td>
        </tr>    
 }

但它不起作用:

@Html.DisplayFor(p=>p.ControlGroupsSummaries.Select(z=>z.Balance))

引发

  

模板只能用于字段访问,属性访问,   单维数组索引或单参数自定义索引器   表达式。

我不知道如何修复它。我想坚持使用数据注释,因此任何string.Format解决方案都不是一个选项。

1 个答案:

答案 0 :(得分:3)

您必须迭代列表并在每个项目上调用显示:

@foreach (var summary in Model.ControlGroupsSummaries)
{
    @Html.DisplayFor(x => summary.Balance)
}