У меня есть DateTimes в модели:
[DataType(DataType.DateTime)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = @"{0:dd/MM/yyyy HH:mm}")]
public DateTime Start { get; set; }
[DataType(DataType.DateTime)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = @"{0:dd/MM/yyyy HH:mm}")]
public DateTime End { get; set; }
Если я пишу 25.05.2016 10:00, это говорит о том, что поле Начало/Конец не является датой, но если я пишу 12.05.2016 10:00, это правильно. Первое число соответствует дню (12), второе - месяцу (05), последнее - году (2016), 10 - часам и 00 - минутам, так почему я не могу написать день больше 12?
Ответ 1 · рейтинг 1 · Grizzly
Вместо того, чтобы делать это непосредственно в классе, попробуйте сделать это в представлении.
@Html.EditorFor(model => model.Start, "{0:dd/MM/yyyy HH:mm}")
@Html.EditorFor(model => model.End, "{0:dd/MM/yyyy HH:mm}")
Затем в вашей модели просто выполните:
[DataType(DataType.DateTime)]
public DateTime Start { get; set; }
[DataType(DataType.DateTime)]
public DateTime End { get; set; }
Позвольте мне знать, если это помогает!
Ответ 2 · Michael Kovattil
То, что у вас есть здесь, в приведенном ниже коде, - это просто формат отображения.
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = @"{0:dd/MM/yyyy HH:mm}")]
Формат даты и времени по умолчанию - ММ/дд/гггг ЧЧ:мм, поэтому на самом деле для даты и времени 12.05.2016 10:00, 12 - месяц, 05 - день и 2016 год.
C# применяет эту проверку, если вы пытаетесь установить дату в другом формате.
И цель формата отображения - отображать указанную дату в формате дд/мм/гггг.
Ответ 3 · Michael Kovattil
DateTime dt=DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture); добавьте формат времени HH:mm, если вам нужна и эта информация.
Ответ 4 · Michael Kovattil
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime Start { get; set; }
а это на ваш взгляд:
@Html.EditorFor(x => x.Start)
это должно работать.