码迷,mamicode.com
首页 > Web开发 > 详细

ASP.NET MVC ActionFilterAttribute的执行顺序

时间:2015-09-09 16:45:36      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:

http://diaosbook.com/Post/2014/6/3/execution-order-of-actionfilter-aspnet-mvc

ASP.NET MVC里面我们要自定义ActionFilter的时候会发现有4个方法可以override:OnActionExecuting,OnActionExecuted,OnResultExecuting,OnResultExecuted。他们分别在什么时候执行一直是困扰人类的一个问题。我代表人类做了一个简单的实验:

首先自定义一个ActionFilter,每个方法执行的时候都在VS的OUTPUT窗口输出信息:

public class TestActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        Debug.WriteLine("OnActionExecuting");
        base.OnActionExecuting(filterContext);
    }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        Debug.WriteLine("OnActionExecuted");
        base.OnActionExecuted(filterContext);
    }

    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        Debug.WriteLine("OnResultExecuting");
        base.OnResultExecuting(filterContext);
    }

    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        Debug.WriteLine("OnResultExecuted");
        base.OnResultExecuted(filterContext);
    }
}

Controller里为了搞清执行顺序,也需要输出:

[TestActionFilter]
public ActionResult Index()
{
    Debug.WriteLine("Before return View()");
    return View();
}

最后是View:

@{
    Debug.WriteLine("Hello from Index.cshtml");
}

执行结果是这样的,有图有JJ:

技术分享

1. OnActionExecuting

2. Before return View()

3. OnActionExecuted

4. OnResultExecuting

5. Hello from Index.cshtml

6. OnResultExecuted

ASP.NET MVC ActionFilterAttribute的执行顺序

标签:

原文地址:http://www.cnblogs.com/zkwarrior/p/4794868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!