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)