Как редактировать значение даты с форматом типа даты в начальной загрузке
У меня есть эти коды, но тогда значение, отображаемое в окне редактирования, равно "мм / дд / гггг"
@Html.TextBoxFor(m => m.StartDate, new { @Value = Model.StartDate.ToString("MM/dd/yyyy"), @placeholder= Model.StartDate.ToString("MM/dd/yyyy"), @class = "form-control", @type="date" })
Как мне добиться чего-то подобного, когда отображаемая дата - это значение из базы данных, а не "мм / дд / гггг"
1 ответ
Во-первых, не устанавливайте 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
не являются ключевыми словами, и поэтому не нуждаются в @
префикс.