Не можете использовать разные EditorTemplates для одного и того же значения DateTime? - PullRequest
0 голосов
/ 05 июля 2011

Допустим, в моей модели у меня есть public DateTime Date {get;set;} свойство.В представлении это должно быть представлено в нескольких текстовых полях - одно для даты и другое для времени.

Я создал два разных шаблона редактора

DateTime.cshtml:

@model DateTime?
@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), new { @class = "datePicker", style = "width:90px"  })

и TimeOnly.cshtml

@model DateTime?
@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortTimeString() : string.Empty), new { @class = "timePicker", style = "width:90px" })

И поля EditorFor в представлении

@Html.EditorFor(x => x.Date)
@Html.EditorFor(x => x.Date,"TimeOnly")

Теперь проблема заключается в том, что фактическое значение свойства Date передается вКонтроллер поставляется со временем по умолчанию 12:00.То же самое происходит с датой, если мы меняем порядок полей EditorFor - дата возвращается к значению даты по умолчанию сразу после применения шаблона TimeOnly, хотя часть времени остается правильной.

Снова наСамо по себе значения в порядке, но при отправке он передает значение по умолчанию в контроллер, либо с правильной датой и временем по умолчанию, и наоборот (зависит от того, какой шаблон использовался первым)

Конечно, я всегда могу отделить дату иВремя, просто добавив другое свойство в модель, но есть ли лучшее решение?

1 Ответ

1 голос
/ 05 июля 2011

Скотт Хансельман написал в блоге о том, как пользовательское связующее для модели может быть использовано в этом случае.

...