C# Language
アクションフィルター
サーチ…
カスタムアクションフィルタ
さまざまな理由でカスタムアクションフィルタを作成します。ロギング、またはアクション実行前にデータをデータベースに保存するためのカスタムアクションフィルタがあります。また、データベースからデータを取得し、それをアプリケーションのグローバル値として設定することもできます。
カスタムアクションフィルタを作成するには、次のタスクを実行する必要があります。
- クラスを作成する
- 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