我的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)
)
实体或视图上是否有任何缺失或错误的定义?即
[DataType(DataType.Date)]
提前感谢您的帮助。。。
您可以尝试将其作为一种可能的解决方案:
1) 如果你想将去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"
})
)
这些通常是我处理日期和验证的方法。
请参阅此问答;一种通过添加自定义验证而不必修复区域性来解决问题的方法。
如何使用kendo验证器验证yyyy-MM-dd格式的日期?
请使用jQuery Un唐突尝试下面的代码。
(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);