我有2個動作濾波器 「ActionFilter1」 &「ActionFilter2,爲什麼「OnActionExecuted」以相反的順序執行?
public class ActionFilter1 : FilterAttribute, IActionFilter
{
public void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpContext.Current.Application["Order"] += "Action 1: OnActionExecuting <br/>";
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{
HttpContext.Current.Application["Order"] += "Action 1: OnActionExecuted <br/>";
}
}
public class ActionFilter2 : FilterAttribute, IActionFilter
{
public void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpContext.Current.Application["Order"] += "Action 2: OnActionExecuting <br/>";
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{
HttpContext.Current.Application["Order"] += "Action 2: OnActionExecuted <br/>";
}
}
我施加在與控制器操作方法兩個濾波器 「訂單」,
[ActionFilter1(Order = 1)]
[ActionFilter2(Order = 2)]
public ActionResult Index()
{
return View();
}
雖然頁上的瀏覽器執行時,我得到下面的執行動作濾波器輸出,
操作1:OnActionExecuting
甲ction 2:OnActionExecuting
行動2:OnActionExecuted
動作1:OnActionExecuted
問題 - 爲什麼 「OnActionExecuted」 執行以相反的順序,而 「OnActionExecuting」 順序是正確的,因爲我的屬性提供?
謝謝,