ASP.Net MVC Razor удалить время из свойства DateTime

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

ViewModel

public class ViewModelLocumEmpList
{
    public IList<FormEmployment> LocumEmploymentList {get; set;}
}

посмотреть

<table>
  <tr>
   <th>Employer</th>
   <th>Date</th>
   </tr>
    @foreach (var item in Model.LocumEmploymentList) {
      <tr>
        <td>@item.employerName</td>
        <td>@item.startDate</td>
      </tr>
      }
      </table>

моя проблема в том, что строка

@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 с помощью razor

однако у меня нет доступа к свойству startDate в моей ViewModel, моя ViewModel возвращает IList объектов FormEmployment, которые вы можете видеть выше.

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

спасибо.

кроме того, мое свойство startDate аннулируется.

обновление

основываясь на ответе Пинным, я добавил частичный класс (см. ниже), чтобы поместить атрибут [DisplayFormat] в свойство startDate.

public partial class FormEmployment
{
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    public Nullable<System.DateTime> startDate { get; set; }
}

однако мой вид бритвы по-прежнему отображает 20/06/2012 00:00:00 используя следующий код

@Html.DisplayFor(modelItem => item.startDate)

есть идеи?

спасибо.

2 ответов


можно использовать @item.startDate.Value.ToShortDateString() (добавление правильной проверки для значения null)


вы можете использовать атрибут DisplayFormat на вашей модели startDate свойства:

[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}")]
public DateTime? startDate { get; set; }

просто использовать DisplayFor(modelItem => item.startDate)

другой вариант-создать свойство только для чтения только для форматирования:

public String startDateFormatted { get { return String.Format("{0:dd/MM/yyyy}", startDate); } }

и использовать DisplayFor(modelItem => item.startDateFormatted)