Я не использовал jquery.ui, потому что мне нужно было выбрать целую неделю и несколько дат в разных условиях, поэтому я использую средство выбора даты Кита Вудав EditorTemplate для полей даты:
@model Nullable
@{
string name = ViewData.TemplateInfo.HtmlFieldPrefix;
string id = name.Replace(".", "_");
string dt = Model.HasValue ? String.Format("{0:d}",(string)Model.Value.ToShortDateString()) : string.Empty;
}
@Html.TextBox("", dt, new { @class = "datefield", @type = "date", @id = id })
Проверка работает отлично при использовании текстового поля и наличие «всплывающего» средства выбора даты; но что я действительно хочу, так это использовать встроенный указатель даты, но я не могу заставить проверку работать в этих условиях:
@model Nullable
@{
string name = ViewData.TemplateInfo.HtmlFieldPrefix;
string id = name.Replace(".", "_");
string dt = Model.HasValue ? String.Format("{0:d}",(string)Model.Value.ToShortDateString()) : string.Empty;
}
@Html.Hidden("", dt, new { @class = "datefield", @id = id })
Вот фрагмент моей пользовательской проверки на стороне клиента:
form.validate({
rules:{
StartDate: {
required: true,
dpDate: true
}
},
messages: {
StartDate: 'Please enter a valid date (dd-mm-yyyy)'
}
});
А вот определение поля DateTime в моем классе данных:
[Required]
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy}")]
public Nullable StartDate { get; set; }
Я понимаю, что должен добавить onSelect для средства выбора даты, чтобы заполнить скрытое поле датой (датами), но независимо от этого я должен получить сообщение об ошибке, когда значение скрытого поля пусто, но это не проверка. HTML-разметка отображается следующим образом:
Я использую следующие библиотеки:
Я нашел похожий вопрос без ответа, похоже, у разработчика та же проблема, но нет опубликованного решения . Есть идеи, где я ошибаюсь?