Когда вы применяете атрибут [DataType(DataType.Date)]
, Razor визуализирует ввод с типом «дата». Это тип ввода HTML 5, и во всех современных браузерах он будет отображаться как элемент управления браузера (календарь, который вы получаете по умолчанию). Тем не менее, управление браузером также вызывает две вещи:
- Дата будет отображаться локально (т. Е. MM / DD / YYYY в США)
- Значение будет установлено как ISO (ГГГГ-ММ-ДД) и должны быть указаны как ISO. Значение, установленное не в формате ISO, будет считаться нулевым, и дата не будет установлена.
Хотя на самом деле это хорошие вещи. Дата должна отображаться локализованно, и , вы должны работать с датами ISO, идущими назад и вперед с сервера. Однако, если вы по какой-то причине полностью против этого, вы не можете использовать этот элемент управления браузера. Единственный способ обойти это - указать текст как текст:
<input id="datepicker" asp-for="DredgingTime" type="text" class="form-control" />
Затем ввод будет отображаться как текстовое поле, и любой формат, который вы установили, будет применяться. Однако теперь вы также откажетесь от всей встроенной проверки даты. Теперь это просто обычный текст, поэтому пользователь может поместить туда что угодно . Таким образом, вы должны использовать библиотеку JS какого-либо рода, чтобы гарантировать, что она является действительной датой и в том формате, который вы ожидаете.