MVC日期时间验证 - 英国的日期格式(MVC DateTime validation - UK D

2019-06-17 20:00发布

我有与添加的非侵入式JavaScript验证ValidationMessageFor控制两个日期字段的简单示意图。

我的问题是我不断收到告诉我的日期是无效的,当它在正确的格式(DD / MM / YYYY)

我已经添加<globalization culture="en-GB" uiCulture="en-GB"/>到我的web.config,并且也包括[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]每个DateTime的属性,但它仍然不会接受英国格式的日期。

有什么明显的,我在这里失踪?

Answer 1:

其实你只需要重载日期不显眼的JavaScript验证方法

jQuery(function ($) {
    $.validator.addMethod('date',
    function (value, element) {
        if (this.optional(element)) {
            return true;
        }

        var ok = true;
        try {
            $.datepicker.parseDate('dd/mm/yy', value);
        }
        catch (err) {
            ok = false;
        }
        return ok;
    });
});


Answer 2:

博赫丹的榜样工作一种享受! 我+1你的答案伴侣。

为了完整起见,我写了关于如何所有的部分(模型,视图,自定义EditorTemplate,jQuery包含并添加博赫丹的解决方案)整合博客文章。

你可以在这里阅读: http://www.kestrelblackmore.com/blog/jquery-datepicker-mvc4



Answer 3:

我知道这是旧的,但使用这个我添加到输入当前日期格式的属性(这是我从ASP MVC代码获取与Cul​​tureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern.ToLower())。

然后,我重写了JavaScript的使用在属性中找到的格式进行验证。

        var format = "mm/dd/yyyy";
        if (element.attributes["data-format"]) {
            format = element.attributes["data-format"].value;
        }

我也看到了jQuery UI的日期选择器相同的属性。 这可能不是有用的,但它可以保持格式至少与文化背景相一致。 虽然它可以帮助别人



Answer 4:

我已经采取了不同的方法来解决这个相对于其他的答案。 使用jQuery添加新的日期功能,这将迫使日期使用当前本土文化在应用程序中设置。

$.validator.addMethod('date', function (value, element) {
                var d = new Date();
                return this.optional(element) || !/Invalid|NaN/.test(new Date(d.toLocaleDateString(value)));
            });

也就是说,如果它失败的jQuery验证。 我的信用这个答案埃尔顿·斯通曼后可以读取这里

希望这会帮助别人。



Answer 5:

尝试在jquery.validate.js改变这种直接的。 与$ .datpicker工作

date: function (value, element) {
    var s = value;

    var ind2 = 3;
    var ind3 = 6;
    var ind4 = 4;

    if (s.substr(6, 1) != "2") {
        ind2 = ind2 + 1;
        ind3 = ind3 + 1;
        ind4 = ind4 + 1;
    }

    var ndan = s.substr(0, 2);
    var nmje = s.substr(ind2, 2);
    var ngod = s.substr(ind3, ind4);

    var ns = ngod + "," + nmje + "," + ndan;

    return this.optional(element) || !/Invalid|NaN/.test(new Date(ns));


文章来源: MVC DateTime validation - UK Date format