asp.net

C# MVC过滤器

2024-01-16

1.过滤器介绍

我们知道mvc的运行机制是通过管道完成的,过滤器可以注入一些代码逻辑到请求处理管道中,是基于C#的Attribute的实现。当负责调用Action的类ControllerActionInvoker在调用执行Action的时候会检查Action上面的Attribute并查看这些Attribute是否实现了指定的接口,以便进行额外的代码注入处理。


2.过滤器分类:

MVC支持的过滤器类型有四种,分别是:Authorization(授权),Action(行为),Result(结果)和Exception(异常)。


如下表

过滤器类型                 接口                          描述

Authorization    IAuthorizationFilter   此类型(或过滤器)用于限制进入控制器或控制器的某个行为方法

Exception          IExceptionFilter         用于指定一个行为,这个被指定的行为处理某个行为方法或某个控制器里面抛出的异常

Action               IActionFilter              用于进入行为之前或之后的处理

Result               IResultFilter               用于返回结果的之前或之后的处理


但是默认实现它们的过滤器只有三种,分别是Authorize(授权),ActionFilter,HandleError(错误处理);各种信息如下表所示

过滤器                         类名                     实现接口                                  描述

ActionFilter     AuthorizeAttribute     IAuthorizationFilter    此类型(或过滤器)用于限制进入控制器或控制器的某个行为方法

HandleError    HandleErrorAttribute   IExceptionFilter       用于指定一个行为,这个被指定的行为处理某个行为方法或某个控制器里面抛出的异常

自定义             ActionFilterAttribute    IActionFilter和IResultFilter    用于进入行为之前或之后的处理或返回结果的之前或之后的处理