Kendo DatePicker无法验证自定义日期格式

Amr*_*mry 21 telerik asp.net-mvc-4 kendo-ui

我正在使用Kendo DatePicker来编辑我的ASP.NET MVC 4项目中的Kendo Grid中显示的Date字段.为了让DatePicker用于Date字段,请使用自定义日期格式字符串,我将Date.cshtml文件EditorTemplates夹下的文件更新为以下内容:

@(Html.Kendo().DatePickerFor(m => m).Format("dd/MM/yyyy"))
Run Code Online (Sandbox Code Playgroud)

通过这样做,我设法让DatePicker显示我想要的格式.但是,它无法通过手动键入或从弹出日历中选择输入的输入日期验证.

经过进一步调查,我可以说DatePicker正在根据M/d/Y格式验证日期.这个假设是基于我的建立而得出的,即12/1/2012是一个有效的日期,而13/1/2012则不是.

我也尝试添加.ParseFormat("dd/MM/yyyy")到DatePicker声明的末尾,Date.cshtml但它没有修复任何东西.所以我会说这肯定是一个错误,我稍后会向Telerik报告.

但就目前而言,我正在寻找一种解决方法来实现这一目标.我发现我可以kendo.ui.validator.rules.mvcdate在Javascript中覆盖以拥有自己的验证功能.虽然这在Chrome中运行良好,但在IE9中无效.

那么,任何想法如何让DatePicker接受dd/MM/yyyy输入格式?提前致谢.

Geo*_*e K 12

在内部,ASP.NET MVC的日期验证规则(不显眼的客户端验证)使用kendo.parseDate(string)方法,如果没有定义格式/ s ,它将在内部使用预定义的日期模式.我认为在您的情况下,默认文化是"en-US",这就是验证失败的原因,因为具有"dd/MM/yyyy"格式的日期被视为无效.一种可能的解决方案是覆盖日期验证规则(就像您一样)并使用特定格式解析字符串.另一个选项是为页面设置差异文化设置.例如,"de-DE"文化的短日期格式是"dd/MM/yyyy".

  • 这对我有用.但是如果Kendo MVC实现没有在标准的Kendo Javascript库之上做无证的魔法,我希望它更好. (2认同)

Ros*_*sim 10

我使用这种方法,它工作正常..

在页面中添加这两行.

<script src="@Url.Content("~/Scripts/jquery.validate.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")"></script>
Run Code Online (Sandbox Code Playgroud)

然后覆盖jQuery日期验证方法..

<script>
    $(document).ready(function () {
        kendo.culture("en-MY"); //your culture
        $.validator.addMethod('date',
           function (value, element) {
               return this.optional(element) || kendo.parseDate(value)
           });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

与此同时,我Web.config有这个......

<system.web>
    <globalization uiCulture="en-MY" culture="en-MY"></globalization>
</system.web>
Run Code Online (Sandbox Code Playgroud)