从类型的属性中获取格式异常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
indd-mm-yyyy hh:mm
格式。
此外,在这种情况下,您还可以将属性设为string
类型,因为正则表达式会处理您的日期格式。
除此之外,您还可以创建自定义 DataAnnotation。