ASP.NET MVC3和服务器端验证

3
假设用户禁用了JavaScript,因此在MVC3中无法进行客户端验证。那么实现服务器端验证的最佳方法是什么?这样,在用户试图以不当方式处理数据时仍然可以显示验证消息?
谢谢!
编辑:
显然,这是因为我使用EF生成的模型,它们在属性设置器中使用“StructuralObject.SetValidValue”方法。这将导致在MVC验证模型之前抛出异常。
我正在尝试找到一种解决方法...

你能分享一下你的解决方案吗?我也遇到了同样的问题,不知道该怎么解决。 - Benjamin Gale
我真的不记得解决方案了...抱歉。 - Vex
实际上,我刚想起来,如果在异常被抛出时按F5并继续,页面应该可以正常渲染。这种类型的异常会导致调试器中断,但在生产环境中不会发生。希望这有所帮助。 - Vex
你不认为在生产环境中人们会输入错误的数据吗?我持不同意见。 - Benjamin Gale
4个回答

4

这就是问题所在,尽管使用了数据注释和客户端验证(当启用时)工作正常,但是ModelState.IsValid每次都返回true,即使模型实际上无效... - Vex
但是你是如何解决的呢?我目前也遇到了EF的同样问题。 - Mohag519

2

ScottGu在他的博客中建议使用数据注释来完成这个任务。

P.S. 链接是关于MVC2的,this one似乎更加最新。


2

2

如果您使用数据注释进行验证,则不需要做任何操作。 服务器始终会验证数据,无论客户端是否已经这样做。


对我来说还不太起作用。如果我禁用客户端验证,就会抛出异常,而不是显示错误消息。我尝试使用ModelState.IsValid,但没有用... - Vex
那么你的问题应该是“为什么我的服务器端验证不起作用?”或类似的问题。请发布您收到的异常以及引发异常的代码。 - Kyle Trauberman
请发布您的模型和控制器代码。这将有助于我们确定错误发生的原因。 - Dismissile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接