ASP.NET MVC Формат скрытого даты и времени - PullRequest
6 голосов
/ 29 ноября 2011

У меня есть модель со свойством DateTime, которая в одном месте помещается в скрытое поле ввода.

@Html.HiddenFor(m => m.StartDate)

, который генерирует следующий HTML-код:

<input id="StartDate" name="StartDate" type="hidden" value="1/1/2011 12:00:00 AM" >

Проблема в том, что в значение включено время, и моя пользовательская проверка даты ожидает дату в формате ## / ## / ####, что приводит к сбою проверки. Я могу легко изменить свою пользовательскую проверку даты, чтобы заставить эту ситуацию работать, но я бы предпочел, чтобы скрытое поле отображало значение в правильном формате.

Я попытался использовать атрибут DisplayFormat в свойстве модели, но, похоже, это не меняет формат скрытого ввода.

Я понимаю, что мог бы просто создать скрытый ввод вручную и вызвать StartDate.ToString ("MM / dd / yyyy") для значения, но я также использую эту модель в динамически генерируемом списке элементов, поэтому входные данные индексируются и имеют идентификаторы, такие как Collection [Some-Guid] .StartDate, что затруднит определение идентификатора и имени входа.

Есть ли способ заставить значение 'value' выводиться в определенном формате при рендеринге поля на странице как скрытого ввода?

1 Ответ

9 голосов
/ 29 ноября 2011

Вы можете использовать собственный шаблон редактора:

public class MyViewModel
{
    [UIHint("MyHiddenDate")]
    public DateTime Date { get; set; }
}

, а затем определить ~/Views/Shared/EditorTemplates/MyHiddenDate.cshtml:

@model DateTime
@Html.Hidden("", Model.ToString("dd/MM/yyyy"))

и, наконец, по вашему мнению, использовать помощник EditorFor:

@model MyViewModel
@Html.EditorFor(x => x.Date)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...