Asp.net mvc 处理.NET MVC 2操作筛选器时的执行顺序是什么?

Asp.net mvc 处理.NET MVC 2操作筛选器时的执行顺序是什么?,asp.net-mvc,asp.net-mvc-2,action-filter,actionfilterattribute,Asp.net Mvc,Asp.net Mvc 2,Action Filter,Actionfilterattribute,假设我有: [Attribute1(Order=0)] public class Controller1 { [Attribute2] [Attribute3] public ActionResult Action1() { ... } } [Attribute1] [Attribute2(Order=0)] public class Controller1 { [Attribute3] public Acti

假设我有:

[Attribute1(Order=0)]  
public class Controller1  
{  
    [Attribute2]  
    [Attribute3]  
    public ActionResult Action1() { ... }  
}
[Attribute1]  
[Attribute2(Order=0)]  
public class Controller1  
{  
    [Attribute3]  
    public ActionResult Action1() { ... }  
}
属性按以下顺序执行: 2,3,1

这是有意义的,因为属性2和3的顺序为-1,并且将在属性1之前执行,属性1的显式设置顺序等于0

现在,假设我有:

[Attribute1(Order=0)]  
public class Controller1  
{  
    [Attribute2]  
    [Attribute3]  
    public ActionResult Action1() { ... }  
}
[Attribute1]  
[Attribute2(Order=0)]  
public class Controller1  
{  
    [Attribute3]  
    public ActionResult Action1() { ... }  
}
属性按以下顺序执行: 1,2,3


为什么在这种情况下,属性2(其顺序等于0)在属性3(其顺序等于-1)之前执行?

它们应该按照您建议的顺序1、3、2执行。事实上,它们在我的机器上以正确的顺序执行


你能提供你的三个属性的定义吗?这里可能还有其他原因。

啊!我完全忽略了,在我的情况下,Attribute3是OnResultExecuting而不是OnActionExecuting。现在这是有道理的。谢谢你在这方面的帮助。