ASP.Net MVC4:字段xxx必须是日期

Mar*_*cin 1 asp.net-mvc-4

我的EditorFor(DateTime)函数有问题.我有一个这样定义的模型:

    [MetadataType(typeof(MessageSearchDTO_Validation))]
    public class MessageSearchDTO
    {
        public DateTime StartDate { get; set; }
        public DateTime EndDate { get; set; }
    }

    public class MessageSearchDTO_Validation
    {
        [DisplayName("Od")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd HH:mm}")]
        [Required(ErrorMessage = ErrorMessages.FieldRequired)]
        public DateTime StartDate { get; set; }

        [DisplayName("Do")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd HH:mm}")]
        [CustomValidation(typeof(MessageSearchDTO_Validation), "EndDate_CustomValidator")]
        [Required(ErrorMessage = ErrorMessages.FieldRequired)]
        public DateTime EndDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

问题是我想要一个带时间编辑器的完整日期.但它仅适用于Chrome.在FF/IE中我得到了这个javascript验证错误.如果我设置"10/23/2013 12:00:00 AM"的值,它可以正常工作.但是我如何强制我想要的日期时间格式呢?

我甚至试图实现自定义绑定器,它没有工作,因为这是客户端错误...

Ath*_*baN 6

我想这个答案可能会解决你的问题

将jQuery.validate.js中的日期验证方法更改为以下内容解决了以下问题:

date: function (value, element) {
         $.culture = Globalize.culture("en-GB");
         var date = Globalize.parseDate(value, "dd/MM/yyyy", "en-GB");
         return this.optional(element) || 
                        !/Invalid|NaN/.test(new Date(date).toString());
     }
Run Code Online (Sandbox Code Playgroud)

根据您的要求修改它们