【问题标题】:jQueryUI DatePicker and MVC4 with UK date value具有英国日期值的 jQueryUI DatePicker 和 MVC4
【发布时间】:2013-03-31 21:08:50
【问题描述】:

好的,我知道this question has been asked、and asked、and asked,但我遗漏了一些东西,似乎无法弄清楚,因为当我尝试提交诸如 13 之类的日期时,日期选择器看起来正确/04/2013 验证开始并说

字段 [Date Due] 必须是日期

我有一个日期编辑器模板

@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 的字段时会弹出日期选择器,我可以在日期选择器中选择一个日期,例如 2013 年 4 月 13 日,该值显示在文本框中,但提交时验证失败。

我哪里漏掉了什么?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      DateTime format according to the culture in MVC

      【讨论】:

        【解决方案3】:

        对于我的问题的答案,我没有任何功劳;但对我有用的解决方案是在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 表示分钟,而不是月:

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

        【讨论】:

          猜你喜欢
          • 2012-03-19
          • 2014-05-30
          • 2016-08-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-18
          • 1970-01-01
          相关资源
          最近更新 更多