У меня есть форма для установки диапазона дат в форме поиска, например:
<div>
@Html.LabelFor(m => m.DateRangeStart)
@Html.TextBoxFor(m => m.DateRangeStart, "{0:dd-MM-yyyy}", new { @id = "drs" })
@Html.LabelFor(m => m.DateRangeEnd)
@Html.TextBoxFor(m => m.DateRangeEnd, "{0:dd-MM-yyyy}", new { @id = "dre" })
</div>
Поскольку я использую c # Razor MVC, DateTime
значение по умолчанию - 01/01/0001 00:00:000.000
. Тем не менее, когда модель поставляется с этим значением, форма показывает 01/01/2001
.
Я подозреваю, что это связано со стилем, помимо того, что изображено, я попробовал {0:d}
и многих комбинаций, похожих на показанную. Иногда значение просто удаляется из формы. Я действительно не могу понять, как это работает.
Я также думаю, что это связано с jQuery datepicker
. Из этого поста я предполагаю, что в нем есть какое-то странное недоразумение с 4-значными годами, поскольку Datepicker
, похоже, этого не понимает. Итак, я проверил это:
$("#drs").datepicker({ dateFormat: 'dd/mm/yy' });
$("#dre").datepicker({ dateFormat: 'dd/mm/yy' });
это:
$("#drs").datepicker({ dateFormat: 'dd/mm/yyyy' });
$("#dre").datepicker({ dateFormat: 'dd/mm/yyyy' });
со странным результатом использования 8-значных лет, дублирующих его как 20182018
. Использование yy
показывает 4 цифры года, но превращает 0001
в 2001
.
И первоначальная конфигурация была:
$("#drs").datepicker($.datepicker.regional["es"]);
$("#dre").datepicker($.datepicker.regional["es"]);
Как DateTime
значение по умолчанию используется, когда пользователь не установил никакого значения или при загрузке страницы. Мне бы хотелось, чтобы в форме ничего не отображалось, когда DateTime
равно значению по умолчанию (то есть MinValue
). И показывает правильное значение, когда любая дата выбрана или отправлена вместе с моделью.
UPDATE:
Я решил добавить несколько строк JavaScript, чтобы стереть значения, когда оно равно 01/01/2001
, и это заставляет меня понять, что, хотя оно показывает 01/01/2001
, действительное значение равно 01/01/0001
:
if ($("#drs").val() == "01/01/0001")
$("#drs").val("");
Когда я впервые написал if ($("#drs").val() == "01/01/2001")
значение условия в false
, потому что значение было на самом деле 01/01/0001
.
ОБНОВЛЕНИЕ 2:
Я по ошибке удалил часть заголовка. Спасибо, ребята, за комментарии и заставьте меня понять это. Проблема в использовании Html.Textboxfor
помощника.