using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using 过滤器.Controllers; namespace 过滤器.Filtes { public class MyActionFiterAttribute : ActionFilterAttribute { /// <summary> /// Action过滤器 执行方法之前 /// </summary> /// <param name="filterContext"></param> public override void OnActionExecuting(ActionExecutingContext filterContext) { //RouteData保存了当前请求的路由信息 // filterContext.RouteData.Values["action"]; // filterContext.RouteData.DataTokens["area"]; 获取区域名称 if (filterContext.ActionDescriptor.IsDefined(typeof(MyActionFiterAttribute), false))//检查当前请求的action是否有贴MyActionFiterAttribute标签 { //不执行Action方法,也不执行OnActionExecuted方法,会执行Result过滤器 filterContext.Result = new ContentResult();//给当前请求设置返回结果,不会再继续执行当前的action } filterContext.HttpContext.Response.Write("哈哈哈哈哈~!!!OnActionExecuting"); base.OnActionExecuting(filterContext); } //执行方法之后 public override void OnActionExecuted(ActionExecutedContext filterContext) { filterContext.HttpContext.Response.Write("哈哈哈哈哈~!!!OnActionExecuted"); base.OnActionExecuted(filterContext); } //Result过滤器 public override void OnResultExecuted(ResultExecutedContext filterContext) { filterContext.HttpContext.Response.Write("哈哈哈哈哈~!!!OnResultExecuted"); base.OnResultExecuted(filterContext); } public override void OnResultExecuting(ResultExecutingContext filterContext) { filterContext.HttpContext.Response.Write("哈哈哈哈哈~!!!OnResultExecuting"); base.OnResultExecuting(filterContext); } } }