【发布时间】:2017-01-28 19:08:12
【问题描述】:
我有一个 MVC5 项目,需要使用可用于所有 Controller 或 Action 方法的自定义方法来处理异常。为了解决这个问题,我在Exception handling in ASP.NET MVC 上找到了一些示例,并尝试使用如下所示的方法:
自定义属性:
public class MyErrorHandlerAttribute : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
filterContext.ExceptionHandled = true;
filterContext.Result = new JsonResult
{
Data = new { success = false, error = filterContext.Exception.ToString() },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
}
控制器:
[MyErrorHandler]
public ActionResult Delete(int id)
{
Course deletedCourse = repository.DeleteCourse(id);
if (deletedCourse == null)
{
throw new Exception("Error...");
}
}
查看:
$.ajax({
//code omitted for brevity
success: function (result, textStatus, XMLHttpRequest) {
if (!result.success) {
alert(result.error);
}
}
});
虽然这种方法工作正常,但 filterContext 中没有足够的信息作为有意义的消息或异常类型返回给视图,即“数据库约束错误等”。那么,有没有更好的方法来提供有关异常的详细信息并在本示例中使用 JSON。
【问题讨论】:
标签: c# ajax asp.net-mvc error-handling exception-handling