Charles T. Blankenship Ответов: 1

Использование шаблона редактора (datetime.cshtml) с html.editorfor проблемой


Я успешно создал шаблон редактора для метода @HtmlEditorFor (), и код выглядит следующим образом:
<div class="form-group">
    @Html.LabelFor(model => model.Birthdate, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.Birthdate, "DateTime", new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Birthdate, "", new { @class = "text-danger" })
    </div>
</div>

А частичное представление DateTime выглядит так:
@model DateTime?
@if (Model.HasValue)
{
    @Model.Value.ToString("MM/dd/yyyy")
}

... и это находится в подкаталоге Shared/EditorTemplates.

Шаблон фактически выполняет форматирование, но элемент управления больше не является редактируемым полем ... он просто отображается, как если бы это был простой HTML.

Есть какие-нибудь идеи относительно того, почему это больше не отображается как и область редактирования для моего свойства Birthdate?

Что я уже пробовал:

То, что я попробовал, в точности соответствует тому, что было сказано выше ...

1 Ответов

Рейтинг:
5

Richard Deeming

Потому что это именно то, что вы сказали ему сделать. :)

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

Вот упрощенный пример:

@model DateTime?
@{
    var htmlAttributes = new { type = "date", @class = "form-control", placeholder = ViewData.ModelMetadata.Watermark };
}
@Html.TextBox("", Model?.ToString("yyyy-MM-dd"), htmlAttributes)

NB: То HTML date вход[^] использует однозначный формат "yyyy-MM-dd" как для value атрибут и при отправке значения обратно на сервер. Большинство браузеров автоматически настраивают его в соответствии с настройками отображения пользователя.


Charles T. Blankenship

Ты ПОТРЯСАЕШЬ Ричарда ... спасибо тебе оооочень много!!!!

Charles T. Blankenship

Еще раз... это несколько потрясающих ссылок ... Жаль, что я не знал этого раньше, чем тратить часы на форматирование простого DataTime в MVC ... примите мою благодарность!