自定義動作過濾器

我們編寫自定義操作過濾器有各種原因。我們可能有一個自定義操作過濾器用於記錄,或者在執行任何操作之前將資料儲存到資料庫。我們還可以使用一個從資料庫中獲取資料並將其設定為應用程式的全域性值。

要建立自定義操作篩選器,我們需要執行以下任務:

  1. 建立一個類
  2. 從 ActionFilterAttribute 類繼承它

至少覆蓋以下方法之一:

OnActionExecuting - 在執行控制器操作之前呼叫此方法。

OnActionExecuted - 執行控制器操作後呼叫此方法。

OnResultExecuting - 在執行控制器操作結果之前呼叫此方法。

OnResultExecuted - 在執行控制器操作結果後呼叫此方法。

可以建立過濾器,如下面的清單所示:

    using System;
    
    using System.Diagnostics;
    
    using System.Web.Mvc;
    
    
    
    namespace WebApplication1
    {
    
        public class MyFirstCustomFilter : ActionFilterAttribute
        {
            public override void OnResultExecuting(ResultExecutingContext filterContext)
            {
                //You may fetch data from database here 
                filterContext.Controller.ViewBag.GreetMesssage = "Hello Foo";
                base.OnResultExecuting(filterContext);
            }
    
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                var controllerName = filterContext.RouteData.Values["controller"];
                var actionName = filterContext.RouteData.Values["action"];
                var message = String.Format("{0} controller:{1} action:{2}", "onactionexecuting", controllerName, actionName);
                Debug.WriteLine(message, "Action Filter Log");
                base.OnActionExecuting(filterContext);
            }
        }
    }