字段“日期”必须是日期MVC 4

时间:2013-04-21 17:54:52

标签: jquery asp.net-mvc-4 jquery-validate

我在使用我的jQuery datepicker时遇到此错误。

jQuery的:

$( ".datepicker" ).datepicker({ 
    defaultDate: +7,
    autoSize: true,
    dateFormat: 'dd.mm.yy',
}); 

型号:

[DisplayName("Date")]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
[Required(ErrorMessage = "Date is required")]
public DateTime Date { get; set; }

所以我希望日期格式与dd.MM.yyyy类似,当我使用datepicker选择日期时,它会正确添加到字段中。但同样在第二天,出现验证错误The field 'Date' must be a date

我通过手动编写dd/MM/yy格式的日期进行测试,然后看起来它正在运行。所以某个地方验证器会查找该格式,但我无法找到修改它的位置。

3 个答案:

答案 0 :(得分:2)

你在使用铬吗?可以是jquery.validate.js问题,请查看此Jquery Datepicker Chrome

答案 1 :(得分:0)

DisplayFormat将不是验证中接受的格式。如果你想要一些带有句号的东西,我建议使用正则表达式来验证这一点。

[DisplayName("Date")]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
[Required(ErrorMessage = "Date is required")]
[RegularExpression(@"PUT REGEX HERE", ErrorMessage = "Invalid Date")] // below is a link
public DateTime Date { get; set; }

Some common expressions here.

另外,我建议在从c#转到js时格式一致。

你有JS:

dateFormat: 'dd.mm.yy'

您可能需要:

dateFormat: 'dd.mm.yyyy'

您也可以将模型上的DisplayFormat属性更改为dd.MM.yy。只是一个想法!

答案 2 :(得分:0)

修改https://stackoverflow.com/a/17968454/4955259提供的答案似乎对我的日期格式dd.mm.yy起作用(在jquery.validate.js之后添加脚本)。

jQuery.validator.methods.date = function (value, element) {
    var d = value.split(".");
    return this.optional(element) || !/Invalid|NaN/.test(new Date((/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())) ? d[1] + "." + d[0] + "." + d[2] : value));
};