我想创建一个自定义异常过滤器,它将捕获返回JSON结果的控制器操作中抛出的异常。如何从自定义异常过滤器返回JSON结果?
我想重构以下操作方法:
public JsonResult ShowContent()
{
try
{
// Do some business logic work that might throw a business logic exception ...
//throw new ApplicationException("this is a business exception");
var viewModel = new DialogModel
{
FirstName = "John",
LastName = "Doe"
};
// Other exceptions that might happen:
//throw new SqlException(...);
//throw new OtherException(...);
//throw new ArgumentException("this is an unhandeled exception");
return
Json(
new
{
Status = DialogResultStatusEnum.Success.ToString(),
Page = this.RenderPartialViewToString("ShowContent", viewModel)
});
}
catch (ApplicationException exception)
{
return Json(new { Status = DialogResultStatusEnum.Error.ToString(), Page = exception.Message });
}
catch (Exception exception)
{
return Json(new { Status = DialogResultStatusEnum.Exception.ToString(), Page = "<h2>PROBLEM!</h2>" });
}
}
}
我希望做的是创建一个自定义异常过滤器属性,将捕获的行动引发的任何异常遵循以下逻辑:
- 检查是否有异常
- 号:返回
- 是:
- 如果BusinessLogic异常 - 返回一个JSON结果
- 如果其它未处理的异常:
- 登录
- 返回另一个JSON结果有不同的结果代码
谢谢swapneel,但我想创建一个过滤属性th在我将用来装饰我的控制器操作返回JSON - 我不想重写OnException方法。 – Elie 2011-03-05 19:40:14
你有要求 - 自定义异常过滤器属性在你的问题? – swapneel 2011-03-05 20:21:07
看到我的*编辑HandleAttribute的行动* – swapneel 2011-03-06 00:30:11