具有UK日期值的jQueryUI DatePicker和MVC4

时间:2013-03-31 21:08:51

标签: asp.net-mvc jquery-ui datepicker jquery-ui-datepicker

好的,我知道this question has been askedand askedand 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>

我在哪里错过了什么?

3 个答案:

答案 0 :(得分:0)

以下link是否有帮助?这意味着您使用的DisplayFormatAttribute仅用于显示日期,并且不会自动应用于设置ViewModel属性,除非您指定ApplyFormatInEditMode。对MVCx不太好,所以只是一个猜测。

答案 1 :(得分:0)

验证的问题是jQuery Validate不了解文化。

对于日期,它只会调用javascript:new Date( value ),但(某些)英国日期失败。

因此,您需要将全球化添加到客户端验证器 - 请参阅我对此问题的回答:

DateTime format according to the culture in MVC

答案 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表示分钟,而不是月份:

因此可能是日期格式之间的差异导致了我的问题