The simple answer is don't use a custom date format. Just always do .Format("MM/dd/yyyy") explicitly and do not use "dd/MM/yyyy" ("yyyy-MM-dd" or "MMM d, yyyy" might be ok). And set your web server to use US regional settings in the control panel or in Web.config.
Now for an explanation of the problem and how to actually make dd/MM/yyyy work:
Kendo date validation uses the default kendo culture date format kendo.culture().calendar.patterns.d (and .t for time). If you set this directly or apply a different culture, that sets the date format being validated against. It uses kendo.parseDate so something like "MMM d, yyyy" will be fine but something like "dd/MM/yyyy" will fail validation if d > 12 and the default US culture is being used (see kendo Globalization demo for how to switch cultures).
The reason this happens is because DatePicker.Format(...) is slightly broken. It is a bug in kendo.aspnetmvc.js which provides an alternate date validation function which ignores the DatePicker format and just runs parseDate using the current culture date format. This is the fixed 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;
},
Also, there is a minor bug in the date validator function in kendo.validator.js/kendo.web.js which makes date validation on grids in Internet Explorer always fail.
Also, make sure your web server globalization is set to US to match kendo culture (in Web.config or in the Windows Regional Control Panel). Firefox posts MM/dd/yyyy and the web server needs to match it. Also, the web server regional date format is applied to all client browsers if you do not specify DatePicker.Format explicitly. So if your web server has Canadian/British date formats set in the control panel for Windows, kendo grid DatePickers default to dd/MM/yyyy then error in the validation and again when firefox posts to the web server (kendo default culture under firefox posts MM/dd/yyyy so if your web server expects dd/MM/yyyy, mvc date binding fails).
Note: If you prefer to use the non-mvc date validator: Remove the data-val-date attribute. Add: data-type=\"date\" data-format=\"dd/MM/yyyy h:mm:ss tt\". I believe this is not possible using the html helper. You have to specify the html and javascript directly.
Note: Non-grid DatePickers seem to have no validation due to lacking the "data-val-date" attribute.
Also: "Remember that KendoUI first uses parseFormats option for parsing the date, then converts it to the format option and finally run validations. That's why I use in validation yyyy-MM-dd and not ["MM/dd/yyyy", "dd/MM/yyyy"]." - How to validate a date is in the format yyyy-MM-dd using kendo validator?
Globalization Line for Web.config:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-US" uiCulture="en-US" />