Die einfache Antwort ist, verwenden Sie kein benutzerdefiniertes Datumsformat. Mach einfach immer .Format ("MM/TT/JJJJ") explizit und verwende nicht "TT/MM/JJJJ" ("JJJJ-MM-TT" oder "MMM TT, JJJJ" könnte in Ordnung sein). Stellen Sie Ihren Webserver in der Systemsteuerung oder in Web.config für die Verwendung von US-Ländereinstellungen ein.
nun für eine Erklärung des Problems und wie man tatsächlich dd/MM/yyyy Arbeit machen: (und
Kendo Datum Validierung verwendet den Standard Kendo Kultur Datumsformat kendo.culture() calendar.patterns.d. .t für Zeit). Wenn Sie dies direkt festlegen oder eine andere Kultur anwenden, wird damit das zu validierende Datumsformat festgelegt. Es verwendet kendo.parseDate, so dass etwas wie "MMM d, yyyy" in Ordnung ist, aber etwas wie "dd/MM/yyyy" wird nicht validiert, wenn d> 12 und die Standard-US-Kultur verwendet wird (siehe kendo Globalization Demo für wie Kulturen wechseln).
Der Grund dafür ist, dass DatePicker.Format (...) leicht beschädigt ist. Es ist ein Fehler in kendo.aspnetmvc.js, der eine alternative Datumsüberprüfungsfunktion bereitstellt, die das DatePicker-Format ignoriert und parseDate nur mit dem aktuellen Kulturdatumsformat ausführt.Dies ist die feste javascript:
date: function(input) {
var dp = input.data("kendoDatePicker") || input.data("kendoDateTimePicker");
if (dp != undefined) {
return input.val() === "" || kendo.parseDate(input.val(), dp.options.format) !== null;
}
return input.val() === "" || kendo.parseDate(input.val()) !== null;
},
Außerdem gibt es einen kleinen Fehler in der Funktion Datum Validator in kendo.validator.js/kendo.web.js das Datum Validierung auf Gitter in Internet Explorer macht immer fehl.
Stellen Sie außerdem sicher, dass die Globalisierung des Webservers auf US gesetzt ist, damit sie der Kendo-Kultur entspricht (in Web.config oder in der Windows-Systemsteuerung). Firefox posten MM/TT/JJJJ und der Webserver muss dazu passen. Außerdem wird das regionale Datumsformat des Webservers auf alle Clientbrowser angewendet, wenn Sie DatePicker.Format nicht explizit angeben. Wenn also auf Ihrem Webserver das kanadische/britische Datumsformat im Control Panel für Windows eingestellt ist, ist der kendingraster DatePickers standardmäßig auf TT/MM/JJJJ eingestellt, dann der Fehler in der Validierung und erneut, wenn Firefox auf den Webserver verweist (kendo Standardkultur unter Firefox-Posts) MM/TT/JJJJ, wenn Ihr Webserver dd/MM/JJJJ erwartet, schlägt die Bindung von mvc-Daten fehl.
Hinweis: Wenn Sie den nicht-mvc-Datumsvalidierer verwenden möchten: Entfernen Sie das Attribut data-val-date. Add: Datentyp = \ "Datum \" Datenformat = "TT/MM/JJJJ H: MM: SS Tt \". Ich glaube, das ist mit dem HTML-Helfer nicht möglich. Sie müssen das HTML und Javascript direkt angeben.
Hinweis: Nicht-Grid-DatePicker scheinen keine Validierung zu haben, da das Attribut "data-val-date" fehlt.
Auch: "Denken Sie daran, dass KendoUI zuerst parseFormats Option zum Parsen des Datums verwendet, dann konvertiert es in die Formatoption und schließlich Validierungen. Deshalb verwende ich in Validierung yyyy-MM-dd und nicht [" MM/dd/JJJJ "," TT/MM/JJJJ "]." - How to validate a date is in the format yyyy-MM-dd using kendo validator?
Globalisierung Linie für Web.config:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-US" uiCulture="en-US" />
Haben Sie jemals darüber berichtet oder in den Kendo Foren darüber gepostet? –