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无法确定执行顺序
➤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无法确定执行顺序
发表评论
-
10.2Asp.net MVC各层使用TDD方式
2011-05-01 12:09 804Asp.net MVC各层使用TDD方式 Asp.net M ... -
10.1TDD简介
2011-04-30 23:09 558MVC中的测试驱动开发 为什么需要TDD TDD的由来 它 ... -
9、MVC程序安全限定
2011-04-29 22:14 1811常见网络安全攻击隐患 针对Asp.net MVC防御体系 安 ... -
8.2ASP.NET MVC2使用Ajax类库实例
2011-04-29 13:05 923ASP.NET MVC2使用Ajax类库实例 .net fo ... -
8.1Ajax类库介绍
2011-04-28 09:12 884在ASP.NET MVC中使用 -Microsoft ASP. ... -
7.1Filter的使用
2011-04-26 22:20 501Filter的使用 -对Action的附加说明 Asp.n ... -
6.3Action的调用与属性
2011-04-26 09:43 665Action的调用与属性 1、唤起Action R ... -
6.2ActionResult的使用
2011-04-25 19:14 683ActionResult public abstract c ... -
6.1Controller类的基本构成
2011-04-25 09:17 668关于Controller Controller是什么? C ... -
5.6在Webform中使用routing
2011-04-23 22:48 668在Webform中使用routing 在Asp.net 4中使 ... -
5.5URL和Action匹配的秘密
2011-04-22 09:11 900Routes是如何把URL映射为Action -请求路由管道 ... -
5.4使用routing生成URL
2011-04-21 11:05 600使用routing生成URL URL生成器概述 1、质询每个 ... -
5.3使用Routes
2011-04-20 09:11 7395.3使用Routes 注册Area Route publi ... -
5.2Routes匹配URL的工作方式
2011-04-19 08:55 852URL的匹配规则 -site/{controller}/{ac ... -
5.1Url和Routes介绍
2011-04-17 12:05 6485.1Url和Routes介绍 关于Urls -域名好记好拼 ... -
4、View引擎介绍
2011-04-16 22:03 648View引擎介绍 Request =>Routing= ... -
3、HtmlHelper类(续)
2011-04-16 13:41 652HtmlHelper类(续) Html.TextArea 用 ... -
2、HtmlHelper类
2011-04-15 22:33 1102HtmlHelper类 <%Html. MVC1 & ... -
1、View层
2011-04-15 09:06 628ViewDataDictionary类 View 负责输出 ...
相关推荐
**7.2 打印设置** - 了解如何配置打印的相关选项。 - 学习如何将地图布局导出为PDF文件或其他格式。 --- 通过以上详细的知识点介绍, 我们可以深入理解如何使用C#结合ArcGIS Engine开发GIS应用,包括创建桌面应用...
这个版本是7.2.1.14的评估版,旨在让开发者和潜在用户测试其功能和性能。以下是这个组件涉及的一些核心知识点: 1. **RTSP(Real-Time Streaming Protocol)**:RTSP是一种网络协议,用于控制实时数据的传输,如...
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动画的...
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 小结 ...
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基础概念介绍 /...
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 ...
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 ...
6.16 开机程序设计——receiver与intent-filter协同作业 6.17 双向短信常驻服务——Service与receiver实例 第7章 娱乐多媒体 7.1 访问Drawable资源的宽高——ContextMenu与Bitmap的应用 7.2 绘制几何图形——使用...
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 ...
6.16 开机程序设计——receiver与intent-filter协同作业 6.17 双向短信常驻服务——Service与receiver实例 第7章 娱乐多媒体 7.1 访问Drawable资源的宽高——ContextMenu与Bitmap的应用 7.2 绘制几何图形——使用...
6.16 开机程序设计——receiver与intent-filter协同作业 6.17 双向短信常驻服务——Service与receiver实例 第7章 娱乐多媒体 7.1 访问Drawable资源的宽高——ContextMenu与Bitmap的应用 7.2 绘制几何图形——使用...
### 7.2 自定义动画 - `.animate(properties, duration, easing, callback)`:自定义动画效果。 ## 八、Ajax ### 8.1 异步请求 - `.ajax(url, options)`:发起Ajax请求。 - `.get(url, data, success)`:发送GET...
7.2 缓冲区方式读写操作 7.2.1 缓冲区设备 7.2.2 缓冲区设备读写 7.2.3 缓冲区设备模拟文件读写 7.3 直接方式读写操作 7.3.1 直接读取设备 7.3.2 直接读取设备的读写 7.4 其他方式读写操作 ...
6.16 开机程序设计——receiver与intent-filter协同作业 6.17 双向短信常驻服务——Service与receiver实例 第7章 娱乐多媒体 7.1 访问Drawable资源的宽高——ContextMenu与Bitmap的应用 7.2 绘制几何图形——使用...
7.2 缓冲区方式读写操作 7.2.1 缓冲区设备 7.2.2 缓冲区设备读写 7.2.3 缓冲区设备模拟文件读写 7.3 直接方式读写操作 7.3.1 直接读取设备 7.3.2 直接读取设备的读写 7.4 其他方式读写操作 ...
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...
2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义颜色常数的方法 3.3 更改TextView文字颜色...