字段"日期"必须是日期MVC 4

Mar*_*tin 8 jquery jquery-validate asp.net-mvc-4

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

jQuery的:

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

模型:

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

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

我做了测试,手动编写格式的日期dd/MM/yy,然后看起来它正在工作.因此验证器会在某处查找该格式,但我无法找到修改它的位置.

tec*_*osh 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; }
Run Code Online (Sandbox Code Playgroud)

这里有一些常见的表达方式。

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

你在 JS 中有:

dateFormat: 'dd.mm.yy'
Run Code Online (Sandbox Code Playgroud)

你可能想要:

dateFormat: 'dd.mm.yyyy'
Run Code Online (Sandbox Code Playgroud)

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