我们出于各种原因编写自定义操作过滤器。我们可能有一个自定义操作过滤器,用于记录日志,或在执行任何操作之前将数据保存到数据库。我们也可以从数据库中获取数据并将其设置为应用程序的全局值。
要创建自定义操作过滤器,我们需要执行以下任务:
建立课程
从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)
{
//您可以在此处从数据库中获取数据
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);
}
}
}