`

7.2自定义开发Filter

阅读更多
Custom Filters

➤IAuthorizationFilter
➤IActionFilter
➤IResultFilter
➤IExceptionFilter

ActionFilterAttribute类

ActionFilterAttribute
public virtual void OnActionExecuted(ActionExecutedContext filterContext);
public virtual void OnActionExecuting(ActionExecutingContext filterContext);
public virtual void OnResultExecuted(ResultExecutedContext filterContext);
public virtual void OnResultExecuting(ResultExecutingContext filterContext);

ActionExcutingContext
属性
ActionParameters
Result


ActionExcutedContext
属性
Canceled   // true 不执行
Exception  //抛出异常情况
ExceptionHandled  // boolean true 拿不到ActionResult
Result  //可能生成假的

ResultExecutingContext
属性
Cancel
Result

ResultExecutedContext
属性
Canceled   // true 不执行
Exception  //抛出异常情况
ExceptionHandled  // boolean true 拿不到ActionResult
Result  //可能生成假的

编写ActionFilter
using System.Diagnostics;
using System.Web.Mvc;
public class TimerAttribute: ActionFilterAttribute{
public TimerAttribute(){
//By default, we should be the last filter to run
//so we run just before and after the action method.
this.Order= int.MaxValue;}
public override void OnActionExecuting(ActionExecutingContextfilterContext){
varcontroller = filterContext.Controller;
if (controller != null){
varstopwatch = new Stopwatch();
controller.ViewData[“__StopWatch”] = stopwatch;
stopwatch.Start();}}
public override void OnActionExecuted(ActionExecutedContextfilterContext){
varcontroller = filterContext.Controller;
if (controller != null){
varstopwatch = (Stopwatch)controller.ViewData[“__StopWatch”];
stopwatch.Stop();
controller.ViewData[“__Duration”] =stopwatch.Elapsed.TotalMilliseconds;}}}


==
[Timer]
public ActionResultIndex() {ViewData[“Title”] = “Home Page”;
ViewData[“Message”] = “Welcome to ASP.NET MVC!”;
varrnd= new Random();
intrandomNumber= rnd.Next(200);
Thread.Sleep(randomNumber);
return View();
}
<p>
The duration was: <%= ViewData[“__Duration”] %>
</p>


Filter执行顺序
1、Order小的先执行
2、具有同样order的,看定义范围
3、无order的最后执行
4、代码内部定义的优先执行
5、同类型的filter无法确定执行顺序



分享到:
评论

相关推荐

    ArcGIS-Engine基础开发教程(C#)C#二次开发ArcGis.pdf

    **7.2 打印设置** - 了解如何配置打印的相关选项。 - 学习如何将地图布局导出为PDF文件或其他格式。 --- 通过以上详细的知识点介绍, 我们可以深入理解如何使用C#结合ArcGIS Engine开发GIS应用,包括创建桌面应用...

    Datastead_RTSP_RTMP_HTTP_ONVIF_Filter

    这个版本是7.2.1.14的评估版,旨在让开发者和潜在用户测试其功能和性能。以下是这个组件涉及的一些核心知识点: 1. **RTSP(Real-Time Streaming Protocol)**:RTSP是一种网络协议,用于控制实时数据的传输,如...

    android开发艺术探索高清完整版PDF

    258 6.2.9 Clip Drawable / 260 6.3 自定义Drawable / 262 第7章 Android动画深入分析 / 265 7.1 View动画 / 265 7.1.1 View动画的种类 / 265 7.1.2 自定义View动画 / 270 7.1.3 帧动画 / 272 7.2 View动画的...

    J2EE应用开发详解

    57 4.3.7 Servlet协作 57 4.3.8 Filter 58 4.4 使用Servlet处理客户端请求 58 4.5 会话跟踪 61 4.5.1 使用Cookie进行会话跟踪 61 4.5.2 使用URL重写进行会话跟踪 62 4.5.3 使用隐藏表单域进行会话跟踪 63 4.6 小结 ...

    Android开发艺术探索

    1.3 Intent Filter的匹配规则 / 28 第2章 IPC机制 / 35 2.1 Android IPC简介 / 35 2.2 Android中的多进程模式 / 36 2.2.1 开启多进程模式 / 36 2.2.2 多进程模式的运行机制 / 39 2.3 IPC基础概念介绍 /...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    7.2 Thymeleaf 模板引擎 171 7.2.1 Thymeleaf 基础知识 171 7.2.2 与Spring MVC 集成 174 7.2.3 Spring Boot 的Thymeleaf 支持 175 7.2.4 实战 177 7.3 Web 相关配置 182 7.3.1 Spring Boot 提供的自动配置 182 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    7.2 Thymeleaf 模板引擎 171 7.2.1 Thymeleaf 基础知识 171 7.2.2 与Spring MVC 集成 174 7.2.3 Spring Boot 的Thymeleaf 支持 175 7.2.4 实战 177 7.3 Web 相关配置 182 7.3.1 Spring Boot 提供的自动配置 182 ...

    Google Android SDK开发范例大全(完整版)

    6.16 开机程序设计——receiver与intent-filter协同作业 6.17 双向短信常驻服务——Service与receiver实例 第7章 娱乐多媒体 7.1 访问Drawable资源的宽高——ContextMenu与Bitmap的应用 7.2 绘制几何图形——使用...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    7.2 Thymeleaf 模板引擎 171 7.2.1 Thymeleaf 基础知识 171 7.2.2 与Spring MVC 集成 174 7.2.3 Spring Boot 的Thymeleaf 支持 175 7.2.4 实战 177 7.3 Web 相关配置 182 7.3.1 Spring Boot 提供的自动配置 182 ...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    6.16 开机程序设计——receiver与intent-filter协同作业 6.17 双向短信常驻服务——Service与receiver实例 第7章 娱乐多媒体 7.1 访问Drawable资源的宽高——ContextMenu与Bitmap的应用 7.2 绘制几何图形——使用...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    6.16 开机程序设计——receiver与intent-filter协同作业 6.17 双向短信常驻服务——Service与receiver实例 第7章 娱乐多媒体 7.1 访问Drawable资源的宽高——ContextMenu与Bitmap的应用 7.2 绘制几何图形——使用...

    JQuery 1.2 API 参考文档中文版

    ### 7.2 自定义动画 - `.animate(properties, duration, easing, callback)`:自定义动画效果。 ## 八、Ajax ### 8.1 异步请求 - `.ajax(url, options)`:发起Ajax请求。 - `.get(url, data, success)`:发送GET...

    windows驱动开发技术详解-part2

     7.2 缓冲区方式读写操作  7.2.1 缓冲区设备  7.2.2 缓冲区设备读写  7.2.3 缓冲区设备模拟文件读写  7.3 直接方式读写操作  7.3.1 直接读取设备  7.3.2 直接读取设备的读写  7.4 其他方式读写操作 ...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    6.16 开机程序设计——receiver与intent-filter协同作业 6.17 双向短信常驻服务——Service与receiver实例 第7章 娱乐多媒体 7.1 访问Drawable资源的宽高——ContextMenu与Bitmap的应用 7.2 绘制几何图形——使用...

    Windows驱动开发技术详解的光盘-part1

     7.2 缓冲区方式读写操作  7.2.1 缓冲区设备  7.2.2 缓冲区设备读写  7.2.3 缓冲区设备模拟文件读写  7.3 直接方式读写操作  7.3.1 直接读取设备  7.3.2 直接读取设备的读写  7.4 其他方式读写操作 ...

    Delphi5开发人员指南

    7.2 何时使用ActiveX控件 142 7.3 把ActiveX控件加到组件面板上 143 7.4 Delphi组件外套 144 7.4.1 外套文件是从哪来的 152 7.4.2 枚举 152 7.4.3 控件接口 152 7.4.4 TOleControl的派生类 152 7.4.5 方法 152 7.4.6...

    Google Android SDK开发范例大全的目录

    2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义颜色常数的方法 3.3 更改TextView文字颜色...

Global site tag (gtag.js) - Google Analytics