首页 > 解决方案 > 为什么 Html.DisplayFor 显示模型属性名称而不是属性值?

问题描述

我有以下 Razor 表列:

<td style="width: 300px;">@Html.DisplayFor(m => m.TendersReceived[i].Name)</td>

然而,该列的客户端呈现显示模型属性名称,即上面显示Name在名称列中,而不是实际名称,属性值Name

TendersReceived有关该物业的更多信息:

public List<TenSubTenderersQualitySummaryItemViewmodel> TendersReceived { get; set; } = new List<TenSubTenderersQualitySummaryItemViewmodel>();

public class TenSubTenderersQualitySummaryItemViewmodel
{
    public int Number { get; set; }
    public string Name { get; set; }
    public decimal Wq { get; set; }
    public decimal Threshold { get; set; }
    [Display(Name = "Qualify")]
    public bool DoesQualify { get; set; }
    [Display(Name = "Qualify")]
    public string DoesQualifyText => DoesQualify ? "YES" : "NO";
    public string Progress { get; set; }
    [Display(Name = "Staff Acceptability")]
    public string StaffAcceptability { get; set; }
    [Display(Name = "POINTS RANKING")]
    public decimal PointsRanking { get; set; }
    public bool IsNrt { get; set; }
    public decimal PointsTechnical { get; set; }
    public decimal PointsManagement { get; set; }
    public decimal PointsQuality { get; set; }
    public decimal PointsTotal { get; set; }
}

标签: asp.net-mvcwebrazorhtml-helper

解决方案


您使用的

DisplayFor<TModel,TValue>(HtmlHelper<TModel>, Expression<Func<TModel,TValue>>)

返回由 Expression 表达式表示的对象中每个属性的HTML 标记。

是不正确的。它通常用于模板,通常不DisplayFor用于原始类型。

使用上述将尝试将属性名称呈现为标签,然后呈现其值。

Name {value here}

如果值为 null 或空字符串,您只会看到标签。

假设集合是视图的模型的成员,只需调用模型的成员

<td style="width: 300px;">@Model.TendersReceived[i].Name</td>

推荐阅读