ASP.Net MVC Razor Remove Time From DateTime Property

Я разрабатываю веб-приложение ASP.Net MVC 3 с использованием Razor Views. У меня есть следующая ViewModel, которая передается моему Razor View и повторяется для отображения списка записей.

ViewModel

public class ViewModelLocumEmpList
{
    public IList LocumEmploymentList {get; set;}
}

View


    @foreach (var item in Model.LocumEmploymentList) {
      
      }
      
Employer Date
@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)

Есть идеи?

Спасибо.

13
задан Community 23 May 2017 в 12:03
поделиться