public JsonResult Menu() { // Exception }
我需要应用程序不将用户重定向到 404 页面,而是返回特殊的 JSON 结果,如 { "result":1 }。
请问有没有别的办法,不是try-catching。
最佳答案
您可以实现自己的 FilterAttribute
,类似于 HandleErrorAttribute
。
HandleErrorAttribute 通常在发生错误时执行重定向,但您可以实现返回 JsonResult 的类似属性。像下面这样的事情会做:
public class CustomHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
filterContext.Result = new JsonResult
{
Data = new { result = 1 },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
filterContext.ExceptionHandled = true;
}
}
然后
[CustomHandleError]
public JsonResult Menu()
{
throw new Exception();
}
我会推荐你download the MVC source code from CodePlex并检查 HandleErrorAttribute
的当前实现。它比我上面的粗略实现要微妙得多,您可能需要它的一些功能。
关于asp.net-mvc - 发生异常时返回特殊的 JsonResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4916176/