Asp.net mvc 在mvc中以MM/dd/YYYY格式验证日期

Asp.net mvc 在mvc中以MM/dd/YYYY格式验证日期,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我在MVC信息文件中声明了一个属性,如 [Required(ErrorMessage = "End Date has not being entered")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)] [RegularExpression(@"^(0[1-9]|1[012

我在MVC信息文件中声明了一个属性,如

  [Required(ErrorMessage = "End Date has not being entered")]
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
        [RegularExpression(@"^(0[1-9]|1[012])[/](0[1-9]|[12][0-9]|3[01])[/]\d{4}$", ErrorMessage = "End Date should be in MM/dd/yyyy format")]
        public DateTime? ExpirationDate { get; set; }
但当我以正确的格式输入日期时,如2013年5月13日。它仍然显示错误消息

End Date should be in MM/dd/yyyy format

我缺少什么代码或上面有任何其他错误。

regexp的第一部分不允许使用一位数的月份。你应该把它改成

(@"^([0]?\d|[1][0-2])/..."

注意
标记,这意味着
0
是可选的。

regexp的第一部分不允许使用一位数的月份。你应该把它改成

(@"^([0]?\d|[1][0-2])/..."

请注意
标记,这意味着
0
是可选的。

您不能使用正则表达式在模型中验证日期时间,因为正则表达式总是验证字符串值,当您在DateTime应用它时,它会尝试在字符串中转换。字符串实际上不是MM/dd/YYYY格式,并且总是抛出验证错误

您可以选择以下方式之一:

  • 在资源文件中
  • 您可以创建从派生的自定义属性,并改为使用该属性

  • 您不能使用正则表达式在模型中验证DateTime,因为正则表达式总是验证字符串值,并且当您在DateTime上应用它时,它会尝试在字符串中转换。字符串实际上不是MM/dd/YYYY格式,并且总是抛出验证错误

    您可以选择以下方式之一:

  • 在资源文件中
  • 您可以创建从派生的自定义属性,并改为使用该属性

  • 无法使用正则表达式验证日期,请使用DateTime.TryParseExact将字符串转换为DateTime对象。正则表达式总是会遗漏一些细节,如闰年等。

    如果无法使用正则表达式验证日期,请使用DateTime.TryParseExact将字符串转换为DateTime对象。正则表达式总是会忽略诸如闰年等微妙之处。

    请查看它。我试过了,但没想到会成功

    您实际上可以使用RegExp在MVC中验证日期时间。这是我的设置:


    属性上的RegExp属性:

    (3)除除上述两项主要的[正规表达式(以下以下以下以下)的[[[[[3]主要主要主要的[[[3]以下以下以下以下以下以下以下的[[3]主要主要的[[[[3]以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下的[[[[3::::::::::::(((((^^^^,,))))除除除除(((((((((((^^^^^^^^,,)))))上述上述上述上述上述上述((((((((((((((((((^^^^^,)))))))))))))假如(((((((((((((((((((((^^,))))))))))))))))))))假如(((((((((((({2})\s((上午)|(下午))“,ErrorMessage=“无效日期”)]


    强制验证: 空字符串, 月/日/年/月格式(如2015年3月20日或2015年3月20日或2015年3月2日)的1或2位数字表示月份/日期, C#Date(例如,MM/dd/yyyy hh:MM:ss tt)-一旦服务器将ModelState.IsValid转换为C#DateTime,它就可以为该属性返回true


    查看时的文本框: @Html.TextBoxFor(x=>x.DateOfWeightAndHeightCapture,“{0:MM/dd/yyyy}”,new{@class=“form control”})



    这允许您在模型上拥有一个DateTime属性,该属性由MVC TextBoxFor编辑,用于强制客户端和服务器端验证。请查看它。我试过了,但没想到会成功

    您实际上可以使用RegExp在MVC中验证日期时间。这是我的设置:


    属性上的RegExp属性:

    (3)除除上述两项主要的[正规表达式(以下以下以下以下)的[[[[[3]主要主要主要的[[[3]以下以下以下以下以下以下以下的[[3]主要主要的[[[[3]以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下的[[[[3::::::::::::(((((^^^^,,))))除除除除(((((((((((^^^^^^^^,,)))))上述上述上述上述上述上述((((((((((((((((((^^^^^,)))))))))))))假如(((((((((((((((((((((^^,))))))))))))))))))))假如(((((((((((({2})\s((上午)|(下午))“,ErrorMessage=“无效日期”)]


    强制验证: 空字符串, 月/日/年/月格式(如2015年3月20日或2015年3月20日或2015年3月2日)的1或2位数字表示月份/日期, C#Date(例如,MM/dd/yyyy hh:MM:ss tt)-一旦服务器将ModelState.IsValid转换为C#DateTime,它就可以为该属性返回true


    查看时的文本框: @Html.TextBoxFor(x=>x.DateOfWeightAndHeightCapture,“{0:MM/dd/yyyy}”,new{@class=“form control”})



    这允许您在模型上拥有DateTime属性,该属性由MVC TextBoxFor编辑,用于强制客户端和服务器端验证。(@“^([0]?\d|[1][0-2])\/([0-2]\d|[3][0-1])\/([2][01][1][6-9])\d{2}(\s([0-1]\d|[2][0-3]:[0-5][d]){1,2}”主席先生,我已放置了这些表达式,但仍然显示结束日期应为MM/dd/yyyy格式(@“^([0]?\d|[1][0-2])\/([0-2]\d|[3][0-1])\/([2][01][1][6-9])\d{2}([0-1]\d{2][0-3])(\:[0-5][d}{1,2}-)”先生,我放置了这些表达式。但仍然显示结束日期应为MM/dd/yyyy格式。先生,它仍然不起作用。我已经更新了上面使用的代码。@Abhishek:检查更新的答案,它肯定会解决您的问题。先生,它仍然不起作用。我已经更新了上面使用的代码。@Abhishek:检查更新的答案回答,它肯定会解决你的问题。