自定义操作和结果过滤器都继承ActionFilterAttribute
//
// 摘要:
// 表示筛选器特性的基类。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public abstract class ActionFilterAttribute : FilterAttribute, IActionFilter, IResultFilter
{
// 初始化 System.Web.Mvc.ActionFilterAttribute 类的新实例。
protected ActionFilterAttribute();
// 在执行操作方法后由 ASP.NET MVC 框架调用。
public virtual void OnActionExecuted(ActionExecutedContext filterContext);
// 在执行操作方法之前由 ASP.NET MVC 框架调用。
public virtual void OnActionExecuting(ActionExecutingContext filterContext);
// 在执行操作结果后由 ASP.NET MVC 框架调用。
public virtual void OnResultExecuted(ResultExecutedContext filterContext);
// 在执行操作结果之前由 ASP.NET MVC 框架调用。
public virtual void OnResultExecuting(ResultExecutingContext filterContext);
}
即:Action前执行: OnActionExecuting
Action后执行: OnActionExecuted
return View()前执行:OnResultExecuting
return View()后执行:OnResultExecutedpublic
//想在Action或returen 前后执行些什么需求很方便的
class ActionFilters:ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.HttpContext.Response.Write("Action方法准备执行");
base.OnActionExecuting(filterContext);
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.HttpContext.Response.Write("Action方法执行结束");
base.OnActionExecuted(filterContext);
}
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Response.Write("Action方法执行完毕,准备呈现视图!");
base.OnResultExecuting(filterContext);
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
filterContext.HttpContext.Response.Write("呈现视图结束!");
base.OnResultExecuted(filterContext);
}
}