Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC 3自定义异常过滤器OneException不';t火_Asp.net Mvc_Json_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc ASP.NET MVC 3自定义异常过滤器OneException不';t火

Asp.net mvc ASP.NET MVC 3自定义异常过滤器OneException不';t火,asp.net-mvc,json,asp.net-mvc-3,Asp.net Mvc,Json,Asp.net Mvc 3,我正在开发一个ASP.NETMVC3项目,我想实现我的自定义错误处理逻辑。我试图通过如下方式扩展HandleErrorAttribute来解决此问题: public class ErrorHandlingAttribute : HandleErrorAttribute { public override void OnException(ExceptionContext filterContext) { if (!filterContext.ExceptionHa

我正在开发一个ASP.NETMVC3项目,我想实现我的自定义错误处理逻辑。我试图通过如下方式扩展HandleErrorAttribute来解决此问题:

public class ErrorHandlingAttribute : HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        if (!filterContext.ExceptionHandled)
        {
            filterContext.Result = new JsonResult { 
                                                    Data = new { success = false, error = filterContext.Exception.ToString() }, 
                                                    JsonRequestBehavior = JsonRequestBehavior.AllowGet 
                                                  };
            filterContext.ExceptionHandled = true;
        }
    }
}
我需要的是,在一些AJAX调用之后,在模式弹出对话框上显示一些错误消息(通过呈现部分视图)。因此,在OneException方法中,我将ExceptionContext的结果设置为JsonResult(我现在不会将partialview呈现为字符串,我稍后会这样做)

我的控制器操作如下所示(我用自定义过滤器装饰它):

[HttpPost]
[错误处理]
公共JsonResult创建(StopEditViewModel视图模型)
{
Stop-Stop=Mapper.Map(viewModel.Stop);
if(ModelState.IsValid)
{
Stop addedStop=_testFacade.AddStop(Stop);
返回Json(新的{success=true,tableContainer=_tableName},JsonRequestBehavior.DenyGet);
}
返回Json(新的{success=false},JsonRequestBehavior.DenyGet);
}
在做了一些研究之后,我发现我需要删除
filters.Add(newhandleerrorattribute())行。我也这么做了

我的web.config文件有
标记

但是,当我调用createpost操作时,如果发生异常,则不会调用自定义筛选器方法。应用程序崩溃。我错过什么了吗


谢谢。

您可以在ajax选项中捕获异常OnFailure方法

In View
@using (Ajax.BeginForm("SomeAction", new AjaxOptions { OnFailure = "handleAjaxError" }))
{

}

function handleAjaxError(ajaxContext) {
     alert("Request failed, status code ");
}

当您使用Ajax调用操作时,它将在方法中返回

您可以在ajax选项中捕获异常OnFailure方法

In View
@using (Ajax.BeginForm("SomeAction", new AjaxOptions { OnFailure = "handleAjaxError" }))
{

}

function handleAjaxError(ajaxContext) {
     alert("Request failed, status code ");
}

当您使用Ajax调用操作时,它将在方法中返回

Deniz让你用Ajax调用Deniz让你用Ajax调用Kumar调用,谢谢你的回答。我的观点是,我希望尽可能避免重复的错误处理代码。我的所有控制器操作都需要它,而不仅仅是ajax表单。所以我决定编写一个自定义异常过滤器。我可以用try-catch块将代码包装在每个控制器操作中,并返回一些暴露错误消息的JsonResult,但如果可能的话,我希望通过添加一个异常过滤器来实现。如果使用Ajax或java脚本调用该操作,那么它将不会调用任何过滤器。因为它在调用函数中返回值。或者你的“handleAjaxError”函数将捕获所有ajax异常,因此没有任何必要为每个ajax调用编写单独的异常方法。如果我能为你提供更多帮助,请告诉我。好吧,我想我必须继续你的方法。谢谢,希夫库玛,谢谢你的回答。我的观点是,我希望尽可能避免重复的错误处理代码。我的所有控制器操作都需要它,而不仅仅是ajax表单。所以我决定编写一个自定义异常过滤器。我可以用try-catch块将代码包装在每个控制器操作中,并返回一些暴露错误消息的JsonResult,但如果可能的话,我希望通过添加一个异常过滤器来实现。如果使用Ajax或java脚本调用该操作,那么它将不会调用任何过滤器。因为它在调用函数中返回值。或者你的“handleAjaxError”函数将捕获所有ajax异常,因此没有任何必要为每个ajax调用编写单独的异常方法。如果我能为你提供更多帮助,请告诉我。好吧,我想我必须继续你的方法。非常感谢。