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);

Посмотрите эти вопросы и ответы, чтобы узнать, как решить эту проблему, добавив пользовательскую проверку и не требуя исправления культуры.

Как проверить дату в формате гггг-ММ-дд с использованием валидатора кендо?

Другие вопросы по тегам