我正在开发一个MVC应用程序,它在基本控制器类中处理授权和登录信息,覆盖OnActionExecuting事件。
在出现异常的AJAX调用中,我可以通过属性处理此问题,并在自定义模型窗口中显示错误消息。
我的自定义属性如下:
public class JsonExceptionFilterAttribute : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
if (filterContext.RequestContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.HttpContext.Response.StatusCode = 500;
filterContext.ExceptionHandled = true;
string msg = HttpUtility.HtmlDecode(filterContext.Exception.Message);
if (filterContext.Exception.GetType() == Type.GetType("System.UnauthorizedAccessException"))
{
msg = "Unauthorized access";
}
filterContext.Result = new JsonResult
{
Data = new
{
errorMessage = msg
},
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
}
}
但是当使用DataTables.Net时出现异常时,我得到的唯一消息就是DataTables.NET自己的错误说法" ...请参阅http://datatables.net/tn/7&# 34;
但我想像在其他AJAX调用中一样显示自己的Exception消息。基本上我想显示我在自定义属性响应中提供的错误消息。
我用谷歌搜索过,建议使用 " fnServerData" ,但我无法在任何参数中找到我的异常消息( sSource,aoData,fnCallback,oSettings )我得到了这个事件处理程序。
我怎样才能获得基本控制器返回并显示它的异常消息?
问候。
P.S。 :在Action中处理异常并返回它不适用于此,因为我根本不属于Action方法。