在MVC中,我们可以用不同的过滤器来装饰动作方法,比如
[HttpPost]
[Authorize]
public ActionResult mymethod(){}
HttpPost
派生自MethodSelectorAttribute
(可能是间接的),Authorize
属性继承自ActionFilterAttribute
。
我的问题是:它们在MVC请求管道中执行的顺序是什么?我试图在MVC源代码中搜索,但未能找到相关的代码位。
答案 0 :(得分:71)
过滤器按以下顺序运行:
例如,授权过滤器首先运行,异常过滤器最后运行。在每个过滤器类型中,Order值指定运行顺序。在每个过滤器类型和顺序中,Scope枚举值指定过滤器的顺序。此枚举定义以下过滤器范围值(按其运行顺序):
摘自MSDN
答案 1 :(得分:21)
为了节省您的时间,您可以按照以下方式设置订单:
[MyCustomContextFilter(Order=1)]
索引是0,所以你可以做0,1,2等......
应该注意的是,仅仅因为过滤器在基类上并不能告诉MVC首先应用它:(。