MVC4过滤器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC4过滤器相关的知识,希望对你有一定的参考价值。

MVC4提供的四种基本类型过滤器接口,IAuthorizationFilter、IActionFilter、IResultFilter和IExceptionFilter,可通过继承对应的接口和FilterAttrbute特性,定义自己的过滤器,也可继承内置的过滤器,重写相应的方法,完成自己的需求。

授权:IAuthorizeFilter  授权过滤器接口,对身份进行验证

活动:IActionFilter     行为过滤器接口, 执行Action方法前后执行逻辑

结果:IResultFilter    结果过滤器接口,提供了在返回结果前后执行方法

异常:IExceptionFilter  异常过滤器接口,可对其设定在出现异常后的处理方式和方法。

一.授权过滤器:

AuthorizeAttribute:授权过滤器特性,继承 FilterAttribute, IAuthorizationFilter

若是要自定义授权特性,可以继承于AuthorizeAttribute,然后重写AuthorizeCore(自定义授权)和HandleUnauthorizedRequest(授权失败执行逻辑)的方法。也可以直接继承于FilterAttribute和IAuthorizationFilter,重写OnAuthorization方法。

技术分享

二:方法/行为结果过滤器:

自定义方法行为过滤器,只需要继承于ActionFilterAttribute即可,也可根据自己所需,是否继承IActionFilter和IResultFilter,再继承于FilterAttribute,自定义过滤器。

技术分享

技术分享

ActionFilterAttribute 继承了IActionFilter,IResultFilter接口,实现了接口方法。

 

OnActionExecuting:执行Action前执行

OnActionExecuted:执行Action后执行

OnResultExecuting:返回结果前执行方法

OnResultExecuted:返回结果后执行方法

 

三:异常过滤器

自定义异常过滤器,只需要继承于内置HandleErrorAttribute接口即可。也可自定义异常过滤器,继承于FilterAttribute 和IExceptionFilter.

技术分享

OnException方法:在抛出异常时执行的方法。启用这个异常功能:

使用异常过滤器,需要两个步骤:

   Web.Config 文件配置

   <customErrors  mode="On"></customErrors>

开启自定义错误配置

   使用handleError特性注释动作或控制器类

   [HandleError (Order = 1 ,ExceptionType = typeof(sqlException),

   View = "错误处理的视图")]

Pubic  ActionResult About(){}

 

以上是关于MVC4过滤器的主要内容,如果未能解决你的问题,请参考以下文章

MVC4方法行为过滤器例子(用户登录)

mvc4 或 html 5 中的文件输入过滤器?

csharp 如果页面对移动/非移动上下文无效,则MVC4操作过滤器属性将重定向到不同的控制器

如何在 MVC4 的 UserProfile 中创建自定义附加字段

csharp 如果AcceptTypes包含“application / pdf”或querystring包含asPDF = 1,则过滤MVC4应用程序以将所有视图呈现为PDF。使用w

授权操作过滤器和授权过滤器有啥区别?