サーチ…


カスタムアクションフィルタ

さまざまな理由でカスタムアクションフィルタを作成します。ロギング、またはアクション実行前にデータをデータベースに保存するためのカスタムアクションフィルタがあります。また、データベースからデータを取得し、それをアプリケーションのグローバル値として設定することもできます。

カスタムアクションフィルタを作成するには、次のタスクを実行する必要があります。

  1. クラスを作成する
  2. ActionFilterAttributeクラスから継承する

次の方法の少なくとも1つをオーバーライドします。

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);
            }
        }
    }


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow