kendoValidator() 在使用 DatePicker 时导致“The field xxx must be a date”错误
kendoValidator() causes “The field xxx must be a date” error when using DatePicker
我的 MVC5 应用程序选择 "dd/MM/yyyy" 格式的日期会导致 "The field xxx must be a date" 错误。另一方面,如果我评论 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)]
在此先感谢您的帮助...
您可以试试这个作为可能的解决方案:
1)如果你想将去德文化应用到整个网站,那么你可以添加:
<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"
})
)
这些通常是我处理日期和验证的方式。
请参阅此问答,了解通过添加自定义验证而无需修复区域性来解决问题的方法。
How to validate a date is in the format yyyy-MM-dd using kendo validator?
试试下面的代码,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);
我的 MVC5 应用程序选择 "dd/MM/yyyy" 格式的日期会导致 "The field xxx must be a date" 错误。另一方面,如果我评论 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)]
在此先感谢您的帮助...
您可以试试这个作为可能的解决方案:
1)如果你想将去德文化应用到整个网站,那么你可以添加:
<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"
})
)
这些通常是我处理日期和验证的方式。
请参阅此问答,了解通过添加自定义验证而无需修复区域性来解决问题的方法。
How to validate a date is in the format yyyy-MM-dd using kendo validator?
试试下面的代码,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);