原文链接:Understanding Action Filters

一、定义

Action筛选器一个属性可以应用控制器Action方法 — — 整个控制器 — — 修改其中执行Action方式

  • 1.OutputCache – Action筛选器缓存 控制器的Action输出 指定时间

  • 2.HandleError – Action筛选器处理引发控制器Action执行错误

  • 3.Authorize – 操作筛选器使可以限制特定用户角色访问

可以创建自己自定义操作筛选器例如可能创建一个自定义操作筛选器执行自定义身份验证系统或者可能创建操作筛选器修改视图数据返回一个控制器动作

二、默认分类

ASP.NET MVC 框架支持四种不同类型筛选器

  1. Authorization filters – Implements the IAuthorizationFilter attribute.

  2. Action filters – Implements the IActionFilter attribute.

  3. Result filters – Implements the IResultFilter attribute.

  4. Exception filters – Implements the IExceptionFilter attribute.

执行顺序:授权筛选器优先级最高;异常筛选器优先级最低。

  1. Authorization筛选器用来实现身份验证和授权控制器操作。例如,Authorize筛选器是Authorization筛选器示例。

  2. Action筛选器包含的逻辑,执行之前和之后的控制器操作执行。您可以使用操作筛选器,例如,修改控制器操作返回的视图数据。

  3. Result筛选器包含的逻辑,执行之前和之后执行视图结果。例如,您可能想要修改视图结果在视图呈现到浏览器之前。

  4. Exception筛选器是最后一种类型的筛选器来运行。异常筛选器可用于处理由您的控制器操作或控制器操作结果引发的错误。您还可以使用异常筛选器记录错误。

    不同类型筛选器特定顺序执行如果控制其中执行相同类型筛选器顺序然后可以设置筛选器的 Order 属性

    所有操作筛选器基类 System.Web.Mvc.FilterAttribute 如果执行特定类型筛选器然后需要创建一个筛选器基类继承实现一个更多 IAuthorizationFilter IActionFilter IResultFilter ExceptionFilter 接口

三、ActionFilterAttribute基类

        为了更容易执行自定义操作筛选器ASP.NET MVC 框架提供 ActionFilterAttribute 基类实现 IActionFilter IResultFilter 接口筛选器继承

  从技术上讲 ActionFilterAttribute 继承操作筛选器结果筛选器然而,整体来说,操作筛选器用于任何类型 ASP.NET MVC 框架筛选器

  ActionFilterAttribute基类有四个方法可以被重写:

  • OnActionExecuting – This method is called before a controller action is executed.

  • OnActionExecuted – This method is called after a controller action is executed.

  • OnResultExecuting – This method is called before a controller action result is executed.

  • OnResultExecuted – This method is called after a controller action result is executed.