【问题标题】:MVC5 custom HandleErrorAttribute needs to detect whether to return partial view to ajax callMVC5自定义HandleErrorAttribute需要检测是否返回局部视图给ajax调用
【发布时间】:2014-05-30 08:57:08
【问题描述】:

我创建了一个自定义 HandleErrorAttribute 以便将日志记录作为异常处理的一部分来实现。但是,与日志记录无关,我遇到了一个问题,我需要在 Ajax 请求而不是 JsonResult 上呈现局部视图。我可以检测到它是一个 ajax 请求,但我不知道如何确定何时适合生成 JsonResult 或 PartialView。在大多数情况下,一个 JsonResult 是合适的,但在某些情况下,一个 PartialView 是合适的。有没有办法确定 OnException() 中的操作是什么?

【问题讨论】:

    标签: ajax exception-handling asp.net-mvc-5 asp.net-mvc-partialview jsonresult


    【解决方案1】:

    我希望找到一种方法来通过 filterContext 中的属性或允许我动态确定预期响应类型的属性来检测所需的响应类型。在我所有的研究中,我找不到任何可以使这成为可能的东西。因此,我通过向自定义 HandleErrorAttribute 类添加一个 bool 属性(默认为 false)来处理这种情况。然后,我将此属性应用于使用 partialView 而不是 JsonResult 响应的方法,将属性值设置为 true。当属性值为 true 时,OnException() 方法会响应 partialView 而不是 JsonResult。

    如果有更好的方法,请告诉我。

    【讨论】:

      【解决方案2】:

      我认为以下 sn-ps 可以帮助您检测所需的响应类型

      protected override void OnException(ExceptionContext filterContext)
      {
          //Determine the return type of the action
          string actionName = filterContext.RouteData.Values["action"].ToString();
          Type controllerType = filterContext.Controller.GetType();
          var method = controllerType.GetMethod(actionName);
          var returnType = method.ReturnType;
      
          if (returnType.Equals(typeof(JsonResult)))
          {
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-09
        相关资源
        最近更新 更多