DateTimePicker的validation无法正常工作

首先我使用这个解决方案来解决我的问题: jQuery日期validationMVC 4 .Net 4.5.1英国日期“必须是日期”错误

  1. 当我发布一个有效的模型时,一切正常。
  2. 当我发布没有日期的无效模型时,它也会很好地validation。
  3. 但是当我发布一个带有日期的无效模型时,它会以exception结束:对象引用未设置为对象的实例。

这是模型中的日期字段:

[DataType(DataType.DateTime)] [DisplayFormat(DataFormatString = "{0:dd.MM.yyyy HH:mm}")] [Display(Name = "Date")] public DateTime Date{ get; set; } 

这是create.cshtml中的代码

 
@Html.LabelFor(model => model.Date, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.TextBoxFor(model => model.Date, "{0:dd.MM.yyyy HH:mm}", new { @Value = ViewBag.Date, @class = "form-control", @id = "datetimepicker" }) @Html.ValidationMessageFor(model => model.Date, "", new { @class = "text-danger" })

Javasript在layout.cshtml中:

  jQuery('#datetimepicker').datetimepicker({ format: 'dmY H:i', lang: 'cs', dayOfWeekStart: 1 }); 

这里是重新设计的jQuery日期validation:

 date: function (value, element) { $.culture = Globalize.culture("cs-CZ"); var date = Globalize.parseDate(value, "dd.MM.yyyy HH:mm","cs-CZ"); return this.optional(element) || !/Invalid|NaN/.test(new Date(date).toString()); }, 

编辑:所以我最终通过将日期函数更改为这样的正则表达式来使其工作:

 return value.match(/^(0?[1-9]|[12][0-9]|3[0-1])[/., -](0?[1-9]|1[0-2])[/., -](19|20)?\d{2} ([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/);