从DateTime 类型的属性中获取格式异常是非常烦人的问题。在DateTime 上进行验证时,这是一个相当常见的问题。
DataAnnotaions 在服务器端工作,要充分利用它们,您需要在控制器中添加 ModelState.IsValid()。
public ActionResult Index(MyViewModel model)
{
if(ModelState.IsValid())
{
// valid data received...
}
else
{
// Invalid data, add model error here and return view...
}
}
如果您要在客户端上进行这些工作,那么您需要在代码中包含两个额外的JavaScript 文件,即jquery.validate.js 和jquery.validate.unobtrusive.js 以及jQuery 核心库。默认情况下,所有这些文件都来自基本 MVC 项目并包含在 Layout 中。
请务必注意包含这些文件的顺序。 jQuery 核心应始终位于顶部,然后是验证库。
- jquery.js
- jquery.validate.js
- jquery.validate.unobtrusive.js
确保在web.config 文件中打开验证标志
MVC 项目。转到此文件并找到以下内容并设置它们
true 如果它们是假的。
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
这应该将您的验证设置为在客户端工作。您可以使用RegularExpression 来装饰模型属性。
[Required]
[RegularExpression("^(([0-2]?[0-9]|3[0-1])/([0]?[1-9]|1[0-2])/[1-2]\d{3}) (20|21|22|23|[0-1]?\d{1}):([0-5]?\d{1})$", ErrorMessage = "Invalid date")]
public string DateTimeStart { get; set; }
这将验证datetime 格式为dd-mm-yyyy hh:mm。
除了在这种情况下,您还可以将您的属性设为 string 类型,因为正则表达式会处理您的日期格式。
除此之外,您还可以create your custom DataAnnotation.