2013-04-21 34 views
8

即时通讯使用我的jQuery datepicker时,面临此错误。字段'日期'必须是日期MVC 4

的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,当我使用日期选择器选择日期是正确添加到现场。但同样在同一秒内,出现验证错误说The field 'Date' must be a date

我做了测试,手动写入格式为dd/MM/yy的日期,然后它看起来像是在工作。所以验证器在某处查找该格式,但我无法找到修改它的位置。

+0

您是否得到了应有的工作?如果没有,你可以试试我的答案。 – technicallyjosh 2013-06-11 15:49:30

+0

你不需要围绕+7引号(如'+7')吗? – Tessmore 2013-06-11 20:41:23

回答

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也是如此。只是一个想法!

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)); 
}; 
相关问题