在ASP.NET MVC中的四大筛选器(Filter),ActionFilter直接应用在某个Action方法上,它在目标Action方法执行前后对调用进行拦截以执行一些额外的操作。这是一种典型的AOP式的设计,如果我们需要在执行某个Action方法的前后执行一些操作,可以通过定义ActionFilter来实现。本篇文章主要讲述多一个应用到相同Action方法上的ActionFilter的执行机制。[本文已经同步到《How ASP.NET MVC Works?》中]
目录
一、ActionFilter
二、ActionFilter的执行机制
三、ActionFilter对ActionResult的设置
四、ActionFilter中的异常处理
ActionFilter允许我们在目标Action方法执行前后对调用进行拦截以执行一些额外的操作,所有的ActionFilter实现了具有如下定义的接口IActionFilter。
public interface IActionFilter
2: {
void OnActionExecuting(ActionExecutingContext filterContext);
void OnActionExecuted(ActionExecutedContext filterContext);
5: }
6:
class ActionExecutingContext : ControllerContext
8: {
public ActionExecutingContext();
public ActionExecutingContext(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary<string, object> actionParameters);
11:
virtual ActionDescriptor ActionDescriptor { get; set; }
virtual IDictionary<string, object> ActionParameters { get; set; }
public ActionResult Result { get; set; }
15: }
16:
class ActionExecutedContext : ControllerContext
18: {
public ActionExecutedContext();
bool canceled, Exception exception);
21:
virtual ActionDescriptor ActionDescriptor { get; set; }
bool Canceled { get; set; }
virtual Exception Exception { get; set; }
bool ExceptionHandled { get; set; }
public ActionResult Result { get; set; }
27: }