如何在 MVC Unobtrusive Validation 中正确验证 DateTime?
How correctally validate DateTime in MVC Unobtrusive Validation?
我正在尝试通过非干扰性验证来验证日期时间字段。
如果输入是 01/01/2017 10:00
那么我得到
The field [fieldId] must be a date.
但是该字段不能是日期,而是日期时间。
参数在我的模型中是这样设置的:
[Display(Name = "Start")]
[DataType(DataType.DateTime)]
public DateTime start { get; set; }
我无法正确验证带有日期时间输入的字段。
我该怎么做?
请记住,指定 DataType
不会进行验证。它所做的只是向浏览器提供有关预期输入类型的提示。要验证,请尝试添加正则表达式验证器,如下所示:
[RegularExpression(@"^((((31\/(0?[13578]|1[02]))|((29|30)\/(0?[1,3-9]|1[0-2])))\/(1[6-9]|[2-9]\d)?\d{2})|(29\/0?2\/(((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))|(0?[1-9]|1\d|2[0-8])\/((0?[1-9])|(1[0-2]))\/((1[6-9]|[2-9]\d)?\d{2})) (20|21|22|23|[0-1]?\d):[0-5]?\d$", ErrorMessage = "Date must be in the format of : dd/mm/yyyy hh:mm"]
[Display(Name = "Start")]
[DataType(DataType.DateTime)]
public DateTime start { get; set; }
我正在尝试通过非干扰性验证来验证日期时间字段。
如果输入是 01/01/2017 10:00
那么我得到
The field [fieldId] must be a date.
但是该字段不能是日期,而是日期时间。
参数在我的模型中是这样设置的:
[Display(Name = "Start")]
[DataType(DataType.DateTime)]
public DateTime start { get; set; }
我无法正确验证带有日期时间输入的字段。
我该怎么做?
请记住,指定 DataType
不会进行验证。它所做的只是向浏览器提供有关预期输入类型的提示。要验证,请尝试添加正则表达式验证器,如下所示:
[RegularExpression(@"^((((31\/(0?[13578]|1[02]))|((29|30)\/(0?[1,3-9]|1[0-2])))\/(1[6-9]|[2-9]\d)?\d{2})|(29\/0?2\/(((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))|(0?[1-9]|1\d|2[0-8])\/((0?[1-9])|(1[0-2]))\/((1[6-9]|[2-9]\d)?\d{2})) (20|21|22|23|[0-1]?\d):[0-5]?\d$", ErrorMessage = "Date must be in the format of : dd/mm/yyyy hh:mm"]
[Display(Name = "Start")]
[DataType(DataType.DateTime)]
public DateTime start { get; set; }