2014-06-10 67 views
0

我已经使用ASP.NET MVC 5和验证我正在使用常规的Jquery unobtrusive验证库。 目前我正面临一个问题,正则表达式验证在客户端工作正常,但在服务器端它不验证值。Asp.net MVC 5模型验证正则表达式不验证特殊字符

[RegularExpression(@"^[0-9]{19}$", ErrorMessage = "Invalid Value")] 
public string Value{ get; set; } 

这是验证19位数的简单正则表达式。它在客户端的工作正常,现在允许'-或任何事情传递,但如果我直接提交给服务器比模型没有验证。 我需要做一些特别的事情吗?

+2

你在打电话给Model.IsValid吗?模型绑定时会发生什么?有什么异常?向我们展示别的东西来帮助。 – Fals

+0

一些如何ModelState.IsValid没有返回错误。 –

回答

0

当您通过post/get/put/delete请求发送数据时,如果手动创建带有验证类的类,那么ModelBinding(将post/get值映射到复杂模型的过程)会发生在那些数据/验证注释将不适用。

可以手动验证模型 - Validate list of models programmatically in ASP.NET MVC

这就是说,有一个叫做PostSharp库,甚至可以强制执行这些规则,当你创建MVC(CodeContracts)以外的自定义对象/模型,如果它不验证它会引发异常。请记住,这个图书馆已经付费,但它有免费版本可用,可能适合您的需求。