【问题标题】:When exactly do OnResultExecuted and OnResultExecuting fire?OnResultExecuted 和 OnResultExecuting 到底什么时候触发?
【发布时间】:2012-05-03 01:32:33
【问题描述】:

我正在创建一个自定义 ActionFilterAttribute,以便在 ajax 请求期间转换 ViewResults 并重定向到 JsonResults。我已经通过单元测试连接了大部分内容,出于某种原因,我假设我的转换必须在OnResultExecuting 中进行,我意识到情况并非如此,正确的覆盖方法是OnActionExecuted,它被称为只要 action 方法返回结果。

我的问题是何时调用 OnResultExecutedOnResultExecuting,因为我在所有四个覆盖中都设置了断点,并且只有 OnActionExecutingOnActionExecuted 中的断点在触发。

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    让我们看下面的例子,它执行你描述的转换:

    public class MyActionFilterAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            if (filterContext.HttpContext.Request.IsAjaxRequest())
            {
                var result = filterContext.Result as ViewResultBase;
                if (result != null && result.Model != null)
                {
                    filterContext.Result = new JsonResult
                    {
                        Data = result.Model,
                        JsonRequestBehavior = JsonRequestBehavior.AllowGet
                    };
                }
            }
        }
    
        public override void OnResultExecuting(ResultExecutingContext filterContext)
        {
        }
    
        public override void OnResultExecuted(ResultExecutedContext filterContext)
        {
        }
    }
    

    OnResultExecuting 方法将在操作结果的ExecuteResult 方法运行之前立即调用,OnResultExecuted 方法在之后立即调用。

    【讨论】:

      【解决方案2】:

      在寻找了一段时间并试图理解接受的答案后,我发现了这一点。我相信这表明执行顺序是

      1. OnActionExecuting
      2. OnActionExecuted
      3. OnResultExecuting
      4. OnResultExecuted

      查看清单 2 下的此链接。http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/understanding-action-filters-cs

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-08
        • 2017-11-20
        • 2014-02-04
        相关资源
        最近更新 更多