我们先来看看ASP.NET MVC 框架提供的几种默认filter类型:1、Authorize准备工作进入C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727文件夹双击aspnet_regsql.exe选择好相应的数据库创建membershipAuthorizeAttribute使用membership来进行权限验证的所以我们需要先在membership中准备一个用户lfm一个角色Admin我们使用studio的项目-》ASP.NET配置创建即可。[Authorize(RolesAdmin)]public ActionResult Index(){ViewData[Message] Welcome to ASP.NET MVC!;return View();}如果lfm不属于Admin角色时Index页是不能访问的2、OutputCache[OutputCache(Duration60, VaryByParamnone)]public ActionResult About(){return View();}然后我们修改About加入%DateTime.Now.ToString() %我们会发现在一分钟内我们刷新About页面其输出并不改变。这个和webform中的页面缓存机制非常相似。这里我们也可以统一的配置时间和条件配置文件Controler中输入[OutputCache(CacheProfileMyProfile)]public ActionResult About(){return View();}3、ExceptionException标明HandleError属性后的Action当内部出现异常时会根据异常类型跳转到相应的View这里需要注意的是上面的源码在开发期无法看到效果必须部署到iis上才能看到效果。实际上这个简单处理在项目中用处不大一般我们都会写自己的异常处理方式自定义异常处理我们一会再自定义filter中讲解。二、自定义filter实例我们先来看一下跟filter相关的类结构一般情况下我们自定义的filter都是继承FilterAttribute类然后再扩展相应的接口的下面我们举几个例子1、自定义异常处理自定义异常处理使用Controller浏览器中输入http://localhost:3983/Home/GetView这样我们就可以根据自己的项目情况来处理异常了。2、监控Action运行时间的TimerTimerAttribute使用[Timer]public ActionResult TestTimer(){Thread.Sleep(100);return View();}页面显示%ViewData[__Duration]%三、filter相关接口方法的执行顺序根据上面的结构图我们知道跟filter相关的总共有四个接口六个方法这些方法如果在同一个类中实现时是有个优先级顺序的IAuthorizationFilterIActionFilterIResultFilterIExceptionFilter接下来我们写个程序来验证这个顺序TestOrder属性类