【问题标题】:kendoValidator() causes “The field xxx must be a date” error when using DatePickerkendoValidator() 使用 DatePicker 时导致“字段 xxx 必须是日期”错误
【发布时间】:2015-02-19 10:36:10
【问题描述】:

我的 MVC5 应用程序选择“dd/MM/yyyy”格式的日期会导致 “字段 xxx 必须是日期” 错误。另一方面,如果我将 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)]

提前感谢您的帮助...

【问题讨论】:

标签: asp.net-mvc kendo-ui datetimepicker kendo-asp.net-mvc kendo-validator


【解决方案1】:

你可以试试这个作为一个可能的解决方案:

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" 
                              })
   )

这些通常是我处理日期和验证的方法。

【讨论】:

  • 非常感谢您的回复。仅应用第一步就解决了问题:)
  • 非常感谢,parseFormats 调用为我节省了一天的时间。我以前从未注意到它...
【解决方案2】:

有关通过添加自定义验证且无需修复文化来解决此问题的方法,请参阅此问答。

How to validate a date is in the format yyyy-MM-dd using kendo validator?

【讨论】:

  • 感谢您的帮助。投票+
【解决方案3】:

用不显眼的 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);

【讨论】:

    猜你喜欢
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 2012-04-12
    • 2012-03-07
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    相关资源
    最近更新 更多