Как использовать Html.TextBoxFor с типом ввода = дата?
Я хочу реализовать в своем коде. Для этого у меня есть следующее:
@Html.TextBoxFor(model => model.CreationDate, new { @type = "date" })
Этот код генерирует следующий HTML:
<input data-val="true" data-val-date="The field CreationDate must be a date."
data-val-required="The CreationDate field is required."
id="CreationDate" name="CreationDate" type="date"
value="09/05/2012 15:02:19">
Значение не отображается на веб-странице, потому что type = "date" ожидает данные в формате YYYY-MM-DD.
Я пробовал форматировать дату, но это взрывается, конечно.
@Html.TextBoxFor(model => model.CreationDate.ToString("YYYY-MM-DD"),
new { @type = "date" })
Как использовать метод TextBoxFor для правильного отображения конструкции?
Или я должен использовать какой-то другой метод (я уже пробовал редактор, но не смог)?
CreationDate
имеет тип DateTime.
Ответы
Ответ 1
Попробуйте это;
@Html.TextBoxFor(model => model.CreationDate,
new { @type = "date", @Value = Model.CreationDate.ToString("yyyy-MM-dd") })
Вы должны обрабатывать null
при настройке значения.
ИЛИ
Если вы можете изменить Model
, вы можете попробовать это:
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime CreationDate{ get; set; }
и, на ваш взгляд, вы можете использовать EditorFor
помощник.
@Html.EditorFor(model => model.CreationDate, new { @type = "date" })
Ответ 2
Дизайн модели:
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime CreationDate{ get; set; }
Просмотр дизайна:
<%: Html.EditorFor(m => m.CreationDate, new { @type = "date" }) %>
Ответ 3
Я сделал что-то подобное с EditorFor и библиотекой boostrap-datepicker:
<div class="input-prepend date" id="startDate" [email protected] data-date-format="m/d/yyyy">
<span class="add-on"><i class="icon-calendar"></i></span>
@Html.EditorFor(m => m.StartDate)
</div>
Ответ 4
Преобразовать С# Datetime в HTML-5 Значение даты
<input type="date" value="<%= SomeFieldDate.ToString("yyyy-MM-dd")%>"/>