天天看點

Understanding Action Filters-了解Action篩選器

原文連結:Understanding Action Filters

一、定義

Action篩選器是一個屬性,你可以應用于控制器的Action方法 — — 或整個控制器 — — 修改在其中執行此Action的方式。

  • 1.OutputCache – 此Action篩選器緩存 控制器的Action輸出 為指定的時間量。
  • 2.HandleError – 此Action篩選器處理引發的控制器Action執行時的錯誤。
  • 3.Authorize – 此操作篩選器使您可以限制對特定使用者或角色的通路。

您還可以建立您自己的自定義操作篩選器。例如,您可能想要建立一個自定義操作篩選器,以執行自定義身份驗證系統。或者,您可能想要建立操作篩選器來修改視圖資料傳回一個控制器動作。

二、預設分類

ASP.NET MVC 架構支援四種不同類型的篩選器︰

  1. Authorization filters – Implements the 

    IAuthorizationFilter

     attribute.
  2. Action filters – Implements the 

    IActionFilter

  3. Result filters – Implements the 

    IResultFilter

  4. Exception filters – Implements the 

    IExceptionFilter

執行順序:授權篩選器優先級最高;異常篩選器優先級最低。

  1. Authorization篩選器用來實作身份驗證和授權控制器操作。例如,Authorize篩選器是Authorization篩選器示例。
  2. Action篩選器包含的邏輯,執行之前和之後的控制器操作執行。您可以使用操作篩選器,例如,修改控制器操作傳回的視圖資料。
  3. Result篩選器包含的邏輯,執行之前和之後執行視圖結果。例如,您可能想要修改視圖結果在視圖呈現到浏覽器之前。
  4. 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.