Я разрабатываю веб-приложение ASP.Net MVC 3 с использованием Razor Views. У меня есть следующая ViewModel, которая передается моему Razor View и повторяется для отображения списка записей.
ViewModel
public class ViewModelLocumEmpList
{
public IList LocumEmploymentList {get; set;}
}
View
Employer
Date
@foreach (var item in Model.LocumEmploymentList) {
@item.employerName
@item.startDate
}
Моя проблема в том, что строка
@Html.DisplayFor(modelItem => item.startDate)
Возвращает такую дату 20/06/2012 00:00:00, и я хотел бы удалить время и просто отображать дату, например, 20/06/2012.
Я попытался добавить
@Html.DisplayFor(modelItem => item.startDate.Value.ToShortDateString())
И
DisplayFor(modelItem => item.startDate.HasValue ? item.startDate.Value.ToShortDateString(): "")
Однако они оба возвращают следующее сообщение об ошибке во время выполнения
Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
Я просмотрел ответ Дарина Димитрова здесь Преобразование формата DateTime с помощью бритвы
Однако я у меня нет доступа к свойству startDate в моей ViewModel, моя ViewModel возвращает IList объектов FormEmployment, которые вы можете видеть выше.
Если у кого-то есть какие-либо идеи о том, как удалить время из свойства даты и времени, я был бы очень признателен.
Спасибо.
Кроме того, мое свойство startDate имеет значение Nullable.
Обновление
Основываясь на ответе PinnyM, я добавил частичный класс (см. ниже), чтобы поместить атрибут [DisplayFormat] в свойство startDate.
public partial class FormEmployment
{
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
public Nullable startDate { get; set; }
}
Однако мой Razor View по-прежнему отображает 20/06/2012 00:00:00со следующим кодом
@Html.DisplayFor(modelItem => item.startDate)
Есть идеи?
Спасибо.