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