Scott Guthrie blogged about ASP.NET MVC 2: Model Validation一年多以前,在他的帖子中,控制器装饰着对ModelState.IsValid方法的调用。从那时起,我们已经拥有了包含quite big changes to the validation的ASP.NET MVC 3。
但是要求调用ModelState.IsValid仍然保持不变吗?如果站点访问者已禁用JavaScript并且站点开发人员忘记检查ModelState.IsValid的值,那么所有DataAnnotation属性都无用吗?
如果是的话,有办法解决这个问题吗?例如,如果编码器没有注册一个总是记得检查模型有效性事件的全局过滤器吗?
答案 0 :(得分:1)
将关闭客户端验证功能。这就是为什么您不能仅依赖客户端验证的原因。它不会影响使用服务器上的注释的模型绑定器。以下是该博客文章的相关文字......
因为action方法接受了 “人”对象作为参数, ASP.NET MVC将创建一个Person 对象并自动映射 传入表单输入值。如 这个过程的一部分,它也将 检查一下是否可以 DataAnnotation验证属性 对于Person对象是有效的。如果 一切都有效,那么 ModelState.IsValid在我们的内部检查 代码将返回true - 在这种情况下 我们将(最终)拯救这个人 到数据库,然后重定向回 到主页。