好的,我知道this question has been asked,and asked,and asked,但我遗漏了一些东西,似乎无法弄明白,因为虽然我试图将日期选择器看起来正确提交一个日期,如13/04/2013,验证开始并说
字段[截止日期]必须是日期
我有一个日期编辑模板
@model DateTime?
@Html.TextBox("", (Model.HasValue ?
Model.Value.ToShortDateString() :
string.Empty), new { @class = "datepicker" })
视图模型
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
[DisplayName("Date Due")]
public DateTime? DueDate { get; set; }
和jQuery
$(document).ready(function () {
$(function () {
$(".datepicker").datepicker({ dateFormat: 'dd/mm/yy' });
});
});
当我输入css类为datepicker
的字段时弹出datepicker,我可以在datepicker中选择日期,例如2013年4月13日,该值显示在文本框中,但提交失败验证。< / p>
我在哪里错过了什么?
答案 0 :(得分:0)
以下link是否有帮助?这意味着您使用的DisplayFormatAttribute
仅用于显示日期,并且不会自动应用于设置ViewModel属性,除非您指定ApplyFormatInEditMode
。对MVCx不太好,所以只是一个猜测。
答案 1 :(得分:0)
验证的问题是jQuery Validate不了解文化。
对于日期,它只会调用javascript:new Date( value )
,但(某些)英国日期失败。
因此,您需要将全球化添加到客户端验证器 - 请参阅我对此问题的回答:
答案 2 :(得分:0)
我不能对我的问题的答案给予任何赞扬;但是对我有用的解决方案是accepted answer for MVC DateTime validation - UK Date format并且是
为日期
重载不引人注目的JavaScript验证方法
链接的帖子有一个脚本,一旦我把它放到我的脚本文件中就能为我工作。
我不确定这是否必要,因为@Nicholas Butler说
jQuery Validate不了解文化。
或者是因为我使用[DisplayFormat(DataFormatString = "{0: dd MMM yyyy}")]
使日期显示为2013年4月20日而不是20/04/2013 as pointed out
{0:dd / mm / yyyy}应为{0:dd / MM / yyyy},因为mm表示分钟,而不是月份:
因此可能是日期格式之间的差异导致了我的问题