在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: }

相关文章: