2011-05-11 32 views
2

Scott Guthrie blogged about ASP.NET MVC 2: Model Validation一年多前,在他的文章中,控制器被调用ModelState.IsValid-method调用。从那以后,我们有了ASP.NET MVC 3,其中包括quite big changes to the validationASP.NET MVC 3验证:禁用JavaScript时DataAnnotation属性是无用的吗?

但是有要求调用ModelState.IsValid仍然保持不变?如果站点访问者禁用JavaScript并且站点开发人员忘记检查ModelState.IsValid的值,那么是否所有DataAnnotation属性都没有用处?

如果是,是否有解决方法?例如,是否有可能注册一个全局过滤器,它总是记得检查模型的有效性事件,如果编码器没有?

+0

现在很少有人找到JavaScript关闭的浏览器 – balexandre 2011-05-11 20:01:16

+0

这是真的。但是,有些人可能只是因为他/她想要绕过客户端验证而关闭javascript。在这种情况下,控制器端应该是安全的。 – 2011-05-12 07:20:57

回答

1

客户端验证功能将被关闭。这就是为什么你绝不能仅仅依靠客户端验证。它不会影响在服务器上使用注释的模型联编程序。下面是从博客文章中的有关内容...

由于动作方法接受一个 “人”对象作为参数, ASP.NET MVC会创建一个Person对象 自动映射 传入形成输入值。由于 这个过程的一部分,它也将 检查是否 DataAnnotation验证属性 Person对象是有效的。如果 一切是有效的,那么我们的 代码中的 ModelState.IsValid检查将返回true - 在这种情况下 我们将(最终)的人 保存到数据库中,然后重定向回 到户页。