我正在使用Kendo DatePicker编辑在ASP.NET MVC 4项目中的Kendo Grid中显示的Date字段。为了将DatePicker用于Date字段,请使用自定义日期格式字符串,我将EditorTemplates文件夹下的Date.cshtml文件更新为以下内容:
@(Html.Kendo().DatePickerFor(m => m).Format("dd/MM/yyyy"))
通过这样做,我设法使DatePicker显示我想要的格式。但是,通过手动输入或从弹出式日历中选择,输入的某些日期验证失败。
进一步调查后,我可以说DatePicker根据M / d / Y格式验证日期。这个假设是基于我的发明,12/1/2012是一个有效的日期,而13/1/2012不是。
我还尝试在Date.cshtml中的DatePicker声明的末尾添加.ParseFormat(“dd / MM / yyyy”),但它并没有修复任何东西。所以我会说这绝对是一个错误,我会把这个报告给Telerik。
但是,暂时,我正在寻找一个解决办法让这个工作。我发现我可以覆盖Javascript中的kendo.ui.validator.rules.mvcdate来拥有自己的验证功能。虽然Chrome在Chrome中工作正常,但在IE9中却无效。
那么,任何想法我可以如何使DatePicker接受dd / MM / yyyy输入格式?提前致谢。
解决方法
在内部,ASP.NET MVC的日期验证规则(不引人注目的客户端验证)使用
kendo.parseDate(string)方法,如果没有定义格式/ s,内部将使用
the predefined date patterns方法。我想在你的情况下,默认文化是“en-US”,这就是为什么验证失败,因为“dd / MM / yyyy”格式的日期被认为是无效的。一个可能的解决方案是覆盖日期验证规则(和您一样),并使用特定格式解析字符串。另一个选项是为页面设置差异文化设置。
For instance,the short date format for the “de-DE” culture is “dd/MM/yyyy”.