在一个位置处理所有Ajax异常,并将错误返回到视图

在一个位置处理所有Ajax异常,并将错误返回到视图,ajax,asp.net-mvc-4,asp.net-ajax,Ajax,Asp.net Mvc 4,Asp.net Ajax,我有一个相当大的应用程序,有几十个Ajax调用。我想在一个地方记录ajax调用中出现的任何错误。我在我的_Layout.cshmtl视图中放置了一个jquery警报,以便将异常传递到警报中。如何将错误字符串从HandleExceptionAttribute类返回到视图 控制器操作: [HandleExceptionAttribute] [HttpPost] [Authorize ( Roles = "View Only,Admin,A-Team Manager,A-Team An

我有一个相当大的应用程序,有几十个Ajax调用。我想在一个地方记录ajax调用中出现的任何错误。我在我的_Layout.cshmtl视图中放置了一个jquery警报,以便将异常传递到警报中。如何将错误字符串从HandleExceptionAttribute类返回到视图

控制器操作:

[HandleExceptionAttribute]
    [HttpPost]
    [Authorize ( Roles = "View Only,Admin,A-Team Manager,A-Team Analyst" )]
    public JsonResult GetEntitySorMapTable ( Decimal entityId )
    {
        //Added this line to hit my HandleExceptionAttribute
        throw new DivideByZeroException();

        List<EntitySorMapView> entitySorMaps = null;

        if (entityId == 0)
        {
            entitySorMaps = new List<EntitySorMapView> ( );
        }

        entitySorMaps = RealmsModel.RealmsDataInterface ( ).SelectEntitySorMapByEntityId ( entityId );

        String data = HtmlHelpers.BuildEntitySorMapTable ( entitySorMaps );

        return new JsonResult ( )
        {
            Data = data,
            MaxJsonLength = Int32.MaxValue
        };            
    }
_布局视图ajax错误脚本:

<script type="text/javascript">
    $(document).ajaxError(function (xhr, status, error) {
        e.stopPropagation();
        if (xhr.error != null)
            alert('Error: ' + xhr.responseText + ' status: ' + status + ' Exception: ' + error);
    });
</script>

$(文档).ajaxError(函数(xhr、状态、错误){
e、 停止传播();
如果(xhr.error!=null)
警报('Error:'+xhr.responseText+'状态:'+status+'异常:'+Error);
});
您可以使用

filterContext.Result = new JsonResult
{
    Data = new { errorMessage = "Your custom error message" },
    JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
在您的_layout.cshtml文件中

$(document).ajaxError(function (event, jqxhr, settings, thrownError) {
    if (jqxhr.error != null) {
        var result = JSON.parse(jqxhr.responseText);
            console.log(result.errorMessage)
    }
});
$(document).ajaxError(function (event, jqxhr, settings, thrownError) {
    if (jqxhr.error != null) {
        var result = JSON.parse(jqxhr.responseText);
            console.log(result.errorMessage)
    }
});