Так что я боролся с форматами DateTime. Я делаю приложение ASP. NET MVC, и у меня есть свойство DateOfBooking типа DateTime. Это свойство записывает DateTime.Date.Now при отправке формы.
Ниже приведены мои свойства и DataAnotations, используемые для форматирования моей даты. Мне нужен формат дд / мм / гггг, но мой столбец в БД (MS SQL Server Managment Studio) имеет формат гггг-ММ-дд.
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime DateOfBooking { get; set; }
В любом случае, приведенный выше код позволил мне получить значение моего DateOfBooking внутри Html .EditorFor помощника (внутри Edit View, который является MVC шаблонным представлением), потому что без него мой помощник просто отображал бы (с датчиком выбора) dd / MM / yyyy, и теперь он показывает фактический значение, которое извлекается из БД.
Теперь из-за той строки кода над моей страницей указателя, которая представляет собой список бронирований, показывающих дату в формате yyyy-MM-dd, и именно здесь я застрял. К счастью, через час я нашел решение.
@foreach (var item in Model)
{
var date = item.DateOfBooking.ToString("dd/MM/yyyy");
<tr>
<td>
@Html.DisplayFor(modelItem => item.Course.CourseName)
</td>
<td>
@Html.DisplayFor(modelItem => date)
</td>
После добавления var date
все работает так, как я хочу. Но я не понимаю, почему я не могу просто go, как это: @Html.DisplayFor(modelItem => item.DateOfBooking.ToString("dd/MM/yyyy"))
Я хочу знать, почему не удалось EditorHelper правильно отобразить мою дату без [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
, и какая разница была добавлена var date
?