kendoValidator() вызывает ошибку "Поле xxx должно быть датой" при использовании DatePicker
В моем приложении MVC5 выбор даты в формате "дд / мм / гггг" вызывает ошибку "Поле ххх должно быть датой". С другой стороны, если я прокомментирую строку kendoValidator(), как показано ниже, ошибка исчезнет, но в этом случае я не могу выполнить проверку на стороне клиента, и по этой причине я хочу использовать kendoValidator. Вот разделы кода, связанные с этим элементом управления.
Сущность:
[Required(ErrorMessage = "Required field")]
[Display(Name = "Start Date")]
public DateTime StartDate { get; set; }
Посмотреть:
...
<script src="~/Scripts/kendo/2014.3.1119/cultures/kendo.culture.de.min.js"></script>
<script src="~/Scripts/kendo/2014.3.1119/messages/kendo.messages.de-DE.min.js"></script>
<script>
$(function () {
$("form").kendoValidator(); //This line cause the error...
});
</script>
@Html.LabelFor(m => m.StartDate )
@(Html.Kendo().DatePickerFor(m => m.StartDate)
.Animation(true)
.Culture("de-DE")
.Footer(false)
.Format("dd/MM/yyyy")
.Value(DateTime.Today)
)
Есть ли в Entity или View отсутствующее или неправильное определение? т.е.
[DataType(DataType.Date)]
Заранее спасибо за помощь...
3 ответа
Вы можете попробовать это как возможное решение:
1) Если вы хотите применить культуру de-DE ко всему сайту, вы можете добавить:
<script type="text/javascript">
kendo.culture("de-DE");
</script>
Замена культуры на ту, которую вы хотите применить, а также обеспечение добавления на страницу соответствующего сценария культуры.
2) Следующее, что вы можете попробовать, это добавить желаемый формат даты в разрешенные форматы даты "parseFormats" для элемента управления.
Это можно сделать так:
@(Html.Kendo().DatePickerFor(m => m.StartDate)
.Format("dd/MM/yyyy")
.ParseFormats(new List<string>()
{
"dd/MM/yyyy",
"dd/MM/yy",
"dd MMM yyyy"
})
)
Как правило, это способы обработки дат и проверки.
Попробуйте этот код ниже с JQuery ненавязчивым.
(function ($, kendo) {
$.extend(true, kendo.ui.validator, {
rules: {
mvcdate: function (input) {
if (input.is("[data-val-date]") && input.val() !== "") {
return kendo.parseDate(input.val()) !== null || kendo.parseDate(input.val(), "dd-MMM-yyyy") !== null || kendo.parseDate(input.val(), "dd-MM-yyyy") !== null || kendo.parseDate(input.val(), "dd/MMM/yyyy") !== null;
}
return true;
}
},
messages: {
mvcdate: function (input) {
return input.attr("data-val-date");
}
}
});
})(jQuery, kendo);
Посмотрите эти вопросы и ответы, чтобы узнать, как решить эту проблему, добавив пользовательскую проверку и не требуя исправления культуры.
Как проверить дату в формате гггг-ММ-дд с использованием валидатора кендо?