我正在使用AjaxSubmit发布表单,并且使用XVal(RuleException方式)完成了服务器端验证。我没有使用try/catch方法将错误添加到模型然后发送到查看。相反 - 我想使用HandleError属性和OnException,我将这些错误添加到Model中。主要问题是如何将这些错误作为Ajax调用的结果?如何在AjaxSubmit中获取模型错误?
1
A
回答
0
现在还没有很好的解决方案。正确地做到这一点需要客户端验证框架(因为要显示错误,需要动态更改HTML页面),直到最近,ASP.NET MVC还没有这样做。但是,ASP.NET MVC 2 Preview 2引入了客户端验证,因此可以很快推测可能会在框架中构建一些内容。
与此同时,HandleErrorAttribute不会帮助你。 HandleErrorAttribute只知道如何重定向到一个错误页面,这通常不是你想要做的,即使是一个“正常的”POST,也不是一个AJAX的帖子,而是响应服务器端的验证错误。
真有你需要处理两种不同的情况:
- 验证错误不是灾难性的故障;他们只是不好的用户数据,你应该期待。您只需要将信息返回到页面,以便可以标记页面以告诉用户如何修复其数据。
- 您还需要处理灾难性故障,例如意外的异常。这与HandleErrorAttribute的作用类似,只要您可以向用户显示消息,但不一定会将该消息与页面上的特定字段进行匹配。
要处理错误的第一个场景,您需要将模型状态包装到可在JavaScript代码中解析的对象中; JSON在这里显然是合适的。然后,您需要在解析此对象并标记表单域的客户端上拥有JavaScript代码。如果您绑定到现有的客户端验证框架中,该框架已经包含用于标记表单域的代码,这会更容易。
要处理第二种类型的错误,您可以扩展HandleErrorAttribute以在发生灾难性故障时提供JSON而不是HTML。再次,您需要编写将在发生故障时执行的JavaScript代码 - jQuery的全球ajaxError
事件在此处非常有用 - 它检测您创建的此结构化错误信息,并向用户显示某种有用的消息。
如果所有这些听起来有点牵扯,那就是,这就是为什么当MVC 2最终发布时,等待并观察内置内容会更有意义。
相关问题
- 1. 如何从模型中获取错误消息
- 2. jQuery - 如何模拟ajaxSubmit的错误事件
- 3. 创建和获取模型的错误
- 4. Cakephp如何从模型获取回调验证错误消息
- 5. Backbone.js:如何从collection.create获取模型验证错误
- 6. 在Wordpress模板中获取错误JS
- 7. Tensorflow在C++ API中加载模型并获取“from device:CUDA_ERROR_OUT_OF_MEMORY”错误
- 8. 获取类型错误
- 9. 如何从模型中获取对象?
- 10. 如何获取类型骨干模型?
- 11. 如何在验证失败时获取由模型引发的错误?
- 12. 如何获取ASP.NET MVC中的模型状态错误的集合?
- 13. 如何获取Webkit错误?
- 14. 获取anonyous类型的错误在LINQ
- 15. 如何获取与模型关联模型相关的模型?
- 16. cfwheels,从不成功的模型更新中获取错误
- 17. laravel模型中主键的错误获取
- 18. 如何在Json返回时读取模型状态错误?
- 19. Rails - 从非验证错误的模型中获取错误消息
- 20. 如何在Android中获取ArrayList的模型数据类型?
- 21. 如何在Microsoft.AspNet.Scaffolding List.cs.t4中获取模型类型?
- 22. Django如何获取模型中的值从另一个模型
- 23. 如何在Django模板中获取模型的对象数?
- 24. 在podfile中获取错误
- 25. 在RadioGroup中获取错误
- 26. 在angularJs中获取错误
- 27. 在createStatement中获取错误
- 28. 在C++中获取错误
- 29. 在childbrowser.java中获取错误
- 30. 在R.java中获取错误
感谢您的详细回复。我真的很感激。 – sajoshi 2009-10-20 13:35:51