`

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基础概念介绍 /...

    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...

    Android入门到精通源代码.

    6.3.2 引用用户自定义字体 6.4 应用实例详解:制作手机桌面 6.4.1 实例分析 6.4.2 实例实现 第7章 Android中的核心Intent 7.1 Intent的作用 7.1.1 多Activity的Android应用 7.1.2 Activity之间的消息传递 7.2 Intent...

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

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

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

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

    Eclipse+Web开发从入门到精通(实例版)

    - **6.5 在Eclipse中开发Filter**: 处理过滤逻辑。 - **6.6 在Eclipse中开发Listener**: 监听事件。 - **6.7 配置web.xml文件**: 定义Web应用结构。 - **6.8 WAR文件的打包生成**: 打包Web应用。 - **6.9 部署Web...

    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 其他方式读写操作 ...

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

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

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

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

    Google Android SDK开发范例大全(完整版附部分源码).pdf

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

    kettle ETL 帮助文档&开发手册

    ### Kettle ETL 帮助文档&开发手册知识点概览 #### 1. Kettle介绍 ##### 1.1 什么是Kettle Kettle是一款开源的ETL工具,主要用于数据抽取、转换与加载(Extract, Transform, Load)。它能够帮助用户从多种数据源...

Global site tag (gtag.js) - Google Analytics