MVC,jQuery和处理错误的最佳做法

有没有人有一个优雅的方式来处理ASP.Net MVC中的错误?在处理控制器操作的请求时,我经常遇到问题,其中Action可以用于正常请求和AJAX请求。我遇到的问题是找到一种处理这些问题的优雅方式。

例如,我如何处理验证错误?理想情况下,我想通过AJAX将表单提交给服务器,然后返回所有操作所发生的错误,并将其显示页面上,但是当客户端关闭JavaScript时,通过正常的回发工作可以正常工作。我知道我们可以使用jQuery验证插件,但是它是不一样的,也不理想,考虑到要验证的数据的限制将在两个地方指定(我的nHibernate验证映射和JavaScript文件) 。

用户何时请求不存在的记录?我应该重定向404页面吗?如果请求是通过Ajax进行的(比如,在对话框中加载)。

所以:

当使用Ajax调用它们时,如何处理控制器动作抛出的错误?特别是模型状态错误(即验证)。可以通过JSON发送吗?

你有没有提示如何使控制器的行动,通常正常和通过Ajax工作良好?编写动作方法时这是一个令人讨厌的问题。由于返回类型,我可能需要一个不同的结果,具体取决于调用者。有没有这样做没有两个行动方法

您在处理MVC中的错误的一般策略是什么?你重定向错误页面很多吗?你重定向到另一个页面吗?

编辑:我认为部分问题是我想要不同的事情发生,所以如果有一个错误,我想要阻止任何进展,直到它的修复,因此发回错误。否则我可能想更新页面的不同区域。但是如果我有一个回报,我将如何知道这是一个成功或失败,而不是包含一个具有指示属性的对象(因此使得部分视图更加困难)

谢谢

解决方法

AJAX调用不是页面刷新,所以我绝对不会重定向403,404等。我会显示一个客户端对话框来解释请求的意外结果。您的控制器可以以与返回成功数据相似的方式将AJAX调用失败的结果返回给AJAX调用,以便您的对话框也可以显示此场景中所需的任何内容

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...