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(){}

时间: 2024-10-05 22:25:17

MVC4过滤器的相关文章

MVC4 过滤器使用和怎样控制全部action和部分action

MVC中的过滤器分四种分别为:IActionFilter(动作过滤器), IAuthorizationFilter(授权过滤器), IExceptionFilter(异常过滤器), IResultFilter(结果过滤器)字面翻译,凑合理解吧. 在此就那IActionFilter举例,在这个接口中有两个方法,分别是:OnActionExecuting(Action执行前执行)和OnActionExecuted(Action执行后执行), 现在我们要想让一个Controller中的所有Action

Asp.Net Mvc Action过滤器(二)

在Mvc中为Action添加过滤器,有两种方式, 一.使用ActionFilterAttribute,简单方式,同时支持Result的过滤处理, 1.可以为空,支持的重写:OnActionExecuted,OnActionExecuting,OnResultExecuted,OnResultExecuting 2.支持类定义或方法定义 3.不支持多个过滤器实例,我的理解是一个action只能指定一个过滤器,目前还没有验证. // // 摘要: // 表示筛选器特性的基类. [AttributeU

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-[过滤器+Cache] 系列目录 上次的探讨没有任何结果,我浏览了大量的文章和个别系统的参考!决定用Cache来做,这可能有点难以接受但是配合mvc过滤器来做效果非常好! 由于之前的过滤器我们用过了OnActionExecuting这个方法来判断权限 现在在方法被执行后我们用OnActionExecuted来监听用户的操作和刷新用户在线列表 首先下载http://files

转:ASP.NET MVC4细嚼慢咽---(6)全局过滤器

原文:http://blog.csdn.net/zx13525079024/article/details/19161777 Asp.Net MVC4中的全局过滤器,可以对整个项目进行全局监控. 新建一个MVC4项目,可以在global.asax文件中看到如下代码:  FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 表示注册全局过滤器. GlobalFilters是全局过滤器的集合,可以通过add方法添加过滤器,默认情况下,H

MVC4 apiController 过滤器ActionFilterAttribute一个小问题

其实就是工作中遇到的一个问题,网上搜了好久才找到,放在这里帮助他人吧. 相信大家新建MVC4的的控制器时 有时会选择继承apiController,正常基本项目的话控制器是继承Controller,api项目的是继承apiController.这里会有个细节,可能不容易察觉到,出了问题也不好找,就是新建过滤器的时候图方便直接继承了ActionFilterAttribute,如果你应引用的是System.Web.Http.Mvc下的ActionFilterAttribute同时控制器是继承的Con

mvc4中的过滤器

过滤器(Filter)把附加逻辑注入到MVC框架的请求处理.实现了交叉关注. 交叉关注:用于整个应用程序,又不适合放在某个局部位置的功能. 过滤器是.NET的注解属性(Attribute),它们对请求处理管道添加了额外的步骤. 注解属性是派生于System.Attribute的特殊的.NET类. 可以被附加到类.方法.属性.字段等代码元素上.其目的是把附加信息嵌入到已编译的代码中,以便在运行时读回这些信息. 过滤器的基本类型: 过滤器类型 接口 默认实现 描述 Authorization IAu

MVC4 AactionFilter 过滤器

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcRazor.Models { //加上这个特性标签后,三种过滤器同时起作用 [AttributeUsage(AttributeTargets.All,AllowMultiple=true)] public class MyActionFilterAttribu

MVC4 异常过滤器

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcRazor.Models { //异常过滤器 public class MyExceptionFilterAttribute:HandleErrorAttribute { public override void OnException(ExceptionCo

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

在Model文件夹下添加一个类MyActionFilterAttribute继承于ActionFilterAttribute: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcValidateDemo.Models { //AllowMultiple = true:允许多个标签同时都起作用 [Attribu