C#自定义操作筛选器

示例

我们出于各种原因编写自定义操作过滤器。我们可能有一个自定义操作过滤器,用于记录日志,或在执行任何操作之前将数据保存到数据库。我们也可以从数据库中获取数据并将其设置为应用程序的全局值。

要创建自定义操作过滤器,我们需要执行以下任务:

  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)
            {
                //您可以在此处从数据库中获取数据 
                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);
            }
        }
    }