首页 > 解决方案 > Chrome 和 IE11 在 asp.net mvc 5 中验证日期时间值的区别

问题描述

我有一个 MVC 5 门户,它在 IE11 上强制投入生产(用于客户处置)。现在 Chrome 成为新的客户标准,我正在修复让它工作。

我有一个奇怪的情况:

我将 jquery datepicker 用于日期时间字段。在 IE11 中它可以正常工作,在 Chrome 中我在验证过程中出现错误,它无法识别 31/12/2020 等值的有效日期时间(12/12/2020 工作可能是因为它检查格式 mm/dd/yy 而不是 dd /毫米/年)。

模型:

[Display(Name = "ActionPlan_f_data_prevision_close", ResourceType = typeof(Resources.Resource))]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    [DataType(DataType.Date)]
    public virtual DateTime f_data_prevision_close { get; set; }

看法:

<div class="form-group">
        @Html.LabelFor(model => model.f_data_prevision_close, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.f_data_prevision_close, "{0:dd/MM/yyyy}",  new { htmlAttributes = new { @class = "form-control" , @type = "textbox" } })
            @Html.ValidationMessageFor(model => model.f_data_prevision_close, "", new { @class = "text-danger" })
        </div>
    </div>

有谁知道为什么在 IE11 中它在 Chrome 中同时工作?

我需要添加什么来让 jquery 验证检查正确的日期值?

先感谢您

临时补丁:

禁用 jquery datepicker 并使用 type="data"。目前让它在 Chrome 中运行的唯一方法。在服务器端,我还有 SQL 的日期格式,在这种情况下可以禁用,因为值始终采用 yyyy-mm-dd 格式(https://developers.google.com/web/updates/2012/08/Quick-FAQs -on-input-type-date-in-Google-Chrome?hl=en )

模型:

[Display(Name = "ActionPlan_f_data_prevision_close", ResourceType = typeof(Resources.Resource))]
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
    [DataType(DataType.Date)]
    public virtual DateTime? f_data_prevision_close { get; set; }

看法:

<div class="form-group">
        @Html.LabelFor(model => model.f_data_prevision_close, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.f_data_prevision_close, "{0:yyyy-mm-dd}",  new { htmlAttributes = new { @class = "form-control" , @type = "date", @autocomplete = "off" } })
            @Html.ValidationMessageFor(model => model.f_data_prevision_close, "", new { @class = "text-danger" })
        </div>
    </div>

标签: jquerygoogle-chromedatevalidationmodel-view-controller

解决方案


推荐阅读