原文鏈接:Understanding Action Filters
一、定義
Action篩選器是一個屬性,你可以應用於控制器的Action方法 — — 或整個控制器 — — 修改在其中執行此Action的方式。
1.OutputCache – 此Action篩選器緩存 控制器的Action輸出 爲指定的時間量。
2.HandleError – 此Action篩選器處理引發的控制器Action執行時的錯誤。
3.Authorize – 此操作篩選器使您可以限制對特定用戶或角色的訪問。
您還可以創建您自己的自定義操作篩選器。例如,您可能想要創建一個自定義操作篩選器,以執行自定義身份驗證系統。或者,您可能想要創建操作篩選器來修改視圖數據返回一個控制器動作。
二、默認分類
ASP.NET MVC 框架支持四種不同類型的篩選器︰
Authorization filters – Implements the
IAuthorizationFilter
attribute.Action filters – Implements the
IActionFilter
attribute.Result filters – Implements the
IResultFilter
attribute.Exception filters – Implements the
IExceptionFilter
attribute.
執行順序:授權篩選器優先級最高;異常篩選器優先級最低。
Authorization篩選器用來實現身份驗證和授權控制器操作。例如,Authorize篩選器是Authorization篩選器示例。
Action篩選器包含的邏輯,執行之前和之後的控制器操作執行。您可以使用操作篩選器,例如,修改控制器操作返回的視圖數據。
Result篩選器包含的邏輯,執行之前和之後執行視圖結果。例如,您可能想要修改視圖結果在視圖呈現到瀏覽器之前。
Exception篩選器是最後一種類型的篩選器來運行。異常篩選器可用於處理由您的控制器操作或控制器操作結果引發的錯誤。您還可以使用異常篩選器記錄錯誤。
每種不同類型的篩選器是按特定的順序執行的。如果你想要控制在其中執行相同類型的篩選器的順序,然後你可以設置篩選器的 Order 屬性。
所有操作篩選器的基類是 System.Web.Mvc.FilterAttribute 類。如果你想要執行特定類型的篩選器,然後你需要創建一個類,從篩選器基類繼承並實現一個或更多的 IAuthorizationFilter、 IActionFilter、 IResultFilter,或 ExceptionFilter 接口。
三、ActionFilterAttribute基類
爲了更容易爲你執行自定義操作篩選器,ASP.NET MVC 框架提供 ActionFilterAttribute 基類。此類實現的 IActionFilter 和IResultFilter 接口,並從篩選器類繼承。
從技術上講,從 ActionFilterAttribute 類繼承的類是操作篩選器和結果篩選器。然而,整體來說,操作篩選器用於指任何類型的 ASP.NET MVC 框架中的篩選器。
ActionFilterAttribute基類有四個方法可以被重寫:
OnActionExecuting – This method is called before a controller action is executed.
OnActionExecuted – This method is called after a controller action is executed.
OnResultExecuting – This method is called before a controller action result is executed.
OnResultExecuted – This method is called after a controller action result is executed.