Почему Html .DisplayFor показывает имя свойства модели, а не значение свойства? - PullRequest
1 голос
/ 17 февраля 2020

У меня есть следующий столбец таблицы Razor:

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

Тем не менее, представление столбца на стороне клиента отображает свойство модели name , то есть вышеприведенное отображение 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; }
}

1 Ответ

2 голосов
/ 04 марта 2020

Ваше использование

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

Возвращает HTML разметку для каждого свойства в объекте , то есть представлен выражением Expression.

неверно. Обычно он используется для создания шаблонов, и обычно не используется DisplayFor для примитивных типов.

Используя вышеизложенное, вы попытаетесь отобразить имя свойства как метку, а затем его значение.

Name {value here}

если значение равно нулю или пустой строке, вы увидите только метку.

Предполагая, что коллекция является членом модели представления, просто вызовите член модели

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