MVCdate时间validation – 英国date格式

我有一个简单的视图与两个date字段的ValidationMessageFor控件添加为不显眼的JavaScriptvalidation。

我的问题是我不断告诉我的date是无效的,当它是在正确的格式(日/月/年)

我已经添加到我的web.config,并且还包括[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]在每个DateTime属性,但它仍然不会接受英国格式的date。

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

其实你只需要重载date不显眼的JavaScriptvalidation方法

 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; }); }); 

博赫丹的榜样工作了一个享受! 我已经+1你的回答队友。

为了完整起见,我写了一篇关于如何整合所有部分(模型,视图,自定义EditorTemplate,jQuery包括并添加Bohdan的解决scheme)的博文。

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

我知道这是旧的,但使用这个我添加到input一个属性与当前date格式(我从CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern.ToLower()从ASP MVC代码中提取)。

然后,我重写了validationJavaScript以使用该属性中find的格式。

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

我也读jQuery的dateselect器相同的属性。 它可能不是那么有用,但它至less可以保持与文化相一致的格式。 虽然它可以帮助某人

与其他答案相比,我采取了不同的方法来解决这个问题。 使用jQuery添加一个新的date函数,这将强制date使用应用程序中设置的当前本地文化。

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

这是如果它在jQueryvalidation失败。 我相信这个答案,可以在这里阅读埃尔顿斯通曼职位

希望这会帮助别人。

尝试改变这个直接在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));