首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET MVC Action Filter 實作與執行順序:OnActionExecuting 與 OnActionExecuted 詳細解析

     編輯:關於ASP.NET

前言

當需要在 Action 執行前後插入共同邏輯(如權限檢查、輸出快取、防盜連結、本地化設定、動態 Action)時,可使用 Action Filter。Filter 採聲明式程式設計,僅能套用於 Action 方法。

Filter 基礎架構

  • 繼承 ActionFilterAttribute 抽象類別。
  • 覆寫兩個虛擬方法:
    • OnActionExecuting(FilterExecutingContext filterContext):Action 執行前。
    • OnActionExecuted(FilterExecutedContext filterContext):Action 執行後。

執行順序示範

1. 自訂 TestFilter

public class TestFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(FilterExecutingContext filterContext)
    {
        filterContext.HttpContext.Session["temp"] += "OnActionExecuting<br/>";
    }
    public override void OnActionExecuted(FilterExecutedContext filterContext)
    {
        filterContext.HttpContext.Session["temp"] += "OnActionExecuted<br/>";
    }
}

2. 套用於 Action

[TestFilter]
public void Index()
{
    this.HttpContext.Session["temp"] += "Action<br/>";
    RenderView("Index");
}

3. 執行結果順序

Session["temp"] 將依序記錄:

  1. OnActionExecuting
  2. Action
  3. OnActionExecuted

應用場景

  • 登入/權限驗證(在 OnActionExecuting 中攔截)
  • 動作記錄與審計(在 OnActionExecuted 中記錄)
  • 例外處理(搭配 IExceptionFilter)
  • 輸出快取控制

結語

Action Filter 提供乾淨的橫切關注點實作方式,理解其執行順序對正確實作邏輯至關重要。後續版本更擴充為非同步 Filter(IAsyncActionFilter)以支援非同步管線。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved