Как я могу использовать аннотацию данных DisplayFormat в столбцах WebGrid?

#asp.net-mvc-3 #razor #html-helper #webgrid

#asp.net-mvc-3 #бритва #html-помощник #webgrid #razor

Вопрос:

У меня есть следующее свойство в моей модели:

 [DisplayFormat(DataFormatString = "{0:d}")]
public DateTime? Date { get; set; }
  

И я пытаюсь использовать Html.DisplayFor помощник для использования этой спецификации в столбце WebGrid, вот так:

 Sources.Column("Date", "As Of Date", (item) => Html.DisplayFor(x => item))
  

Когда я запускаю это, я получаю много дополнительной информации в столбце, и дата выводится в виде даты в длинном формате вместо желаемого короткого формата. Результат, который я получаю, заставляет меня подозревать, что DisplayFor просматривает каждое свойство в модели и печатает его, вместо того, чтобы просто смотреть на дату. Зачем ему это делать? Есть ли что-нибудь, что я могу сделать, чтобы использовать DisplayFor в WebGrid?

Когда я пытаюсь указать item.Date , я получаю ошибку «Дерево выражений может не содержать динамическую операцию»

Ответ №1:

Попробуйте этот фрагмент кода вместо того, что у вас есть сейчас:

 Sources.Column( header: "Date", format: ( item -> { return @Html.Raw(item.date.ToString("d")); }))