Во-первых, не установлен атрибут value
непосредственно. Бритва будет в значительной степени игнорировать это в любом случае. Значение для связанного поля исходит от ModelState
, которое само по себе составлено из значений Request
, ViewBag/ViewData
и Model
в этом порядке. Так, например, если вы хотите StartDate
по умолчанию «сегодня», то вы бы просто заполнить вашу модель с этим в действии, прежде чем вернуть вид:
model.StartDate = DateTime.Today;
Или, лучше, вы можете изменить свойство на вашей модели класса по умолчанию сегодня автоматически:
private DateTime? startDate;
public DateTime StartDate
{
get { return startDate ?? DateTime.Today; }
set { startDate = value; }
}
Просто имейте в виду, что если ваше действие происходит взять из параметров, как startDate
или установить что-то вроде ViewBag.StartDate
, эти значения будут всегда иметь приоритет.
Во-вторых, вы используете тип ввода HTML5 date
. В браузерах, поддерживающих типы ввода HTML5, заданное значение для даты и времени, даты или времени, должно быть в формате ISO. Для даты это означает YYYY-MM-DD
. Если значение не указано таким образом, браузер считает его мусором и отбрасывает его, оставив элемент управления, как будто значение не было предоставлено.
Кроме того, FWIW, вам не нужно приписывать каждому члену вашего анонимного объекта @
. Это ничего технически не наносит, но это запах кода. Для исключения языковых ключевых слов существует префикс @
. Например, с помощью class
вы не можете использовать его напрямую, так как это ключевое слово, поэтому вместо этого вы должны использовать @class
. Тем не менее, такие вещи, как placeholder
и type
, являются не ключевыми словами, поэтому не нужен префикс @
.
У StartDate всегда есть данные, которые являются типами даты. Как я могу добиться отображения значения даты, а не «мм/дд/гггг;»? – Jen143