8. Action过滤

Action过滤

原文: http://quickstarts.asp.net/3-5-extensions/mvc/ActionFiltering.aspx

1. 介绍
一般Action与用户动作是一对一的关系,用户的某一个动作对应一个特定的Action.
然而,有时你可能会希望在Action执行的前后执行指定的操作,MVC中可以通过Action过滤器来实现这个功能.
Action过滤器是一个自定义的Attribute,它的应用范围包括:日志,身份认证和授权,输出缓存,Web抓取过滤,本地化,动态Action等.

2. 实现一个Action过滤器
Action过滤器必须派生自ActionFilterAttribute抽象类,并实现OnActionExecutingOnActionExecuted两个方法。一个示例如下:
public class LoggingFilterAttribute : 
{
public override void (FilterExecutingContext filterContext)
{
filterContext.HttpContext.Trace.Write("Starting: " +
filterContext.ActionMethod.Name);
}

public override void (FilterExecutedContext filterContext)
{
if (filterContext.Exception != null)
{
filterContext.HttpContext.Trace.Write("Exception thrown");
}
}
}
3. Action过滤器上下文
过滤器上下文包括FilterExecutingContext和FilterExecutedContext两个,他们都派生自FilterContext类,提供ActionMethod属性,用于获取Action方法的信息。
FilterExecutingContext包含一个Cancel属性,允许你取消正在执行的Action。
FilterExecutedContent包含ExceptionExceptionHandled属性。若Action执行期间没有错误发生,则Exception属性为null,若Exception属性不为null,且其他过滤器已经处理过这个异常,则ExceptionHandled属性的值为true。

4. 在控制器中使用过滤器
给需要使用过滤器的Action方法加上想要的过滤器Attribute即可。如:
public class HomeController : Controller
{

public void Index()
{
RenderView("Index");
}
}
5. 实现“控制器级”的过滤器
可能出现一种情况:控制器中的所有Action方法都需要同一个过滤器。这是可以通过重写控制器类的OnActionExecutingOnActionExecuted方法来实现过滤器。

6. Action过滤器的范围
过滤器是可继承的。

7. 过滤器的执行顺序
过滤器提供了Order顺序来指定多个过滤器的执行顺序。Order的值必须为0或正数,若Order为-1,则表明不指定该过滤器的执行顺序,它将在所有被指定顺序的过滤器执行之后执行。另外,若两个过滤器的Order值相同将会产生异常。一个例子如下:
[Filter1()]
[Filter2()]
[Filter3()]
public void Index()
{
RenderView("Index");
}
另外,过滤器的两个方法以及“控制器级”的过滤器的两个方法之间的执行顺序也有规定,详见原文。

8. 过滤器执行顺序的例子

转载于:https://www.cnblogs.com/na57/archive/2008/05/06/1185425.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android运行时状态,Android 如何保存Android 运行时状态

Android 如何保存Android 运行时状态使用 SaveInstanceState去保存运行时数据首先,我们需要重写一下系统的public void onSaveInstanceState(Bundle savedInstanceState)方法并在onSaveInstanceState方法中添加需要保存的数据。最后我们可以在onRestoreInstanceStat…

程序文件分类及编写要求

一级:管理体系手册 由质量管理部负责编制,最高管理者批准后发布生效。举例如:XX公司管理手册 二级:管理体系程序文件 由各相关部门进行编写,质量管理部体系负责人审核通过各部门评审会签,由管理者代表批…

仿制药的美丽与陌生

最近,我正在为Oracle认证专家Java SE 7程序员考试做准备,而我恰巧在Java泛型领域遇到了一些看起来很奇怪的结构。 但是,我也看到了一些巧妙而优雅的代码。 我发现这些示例值得分享,这不仅是因为它们可以使您的设计选择更容易&…

C# 判断txt文件编码格式

/// <summary> /// 获取文件的编码格式 /// </summary> public class EncodingType{/// <summary> /// 给定文件的路径&#xff0c;读取文件的二进制数据&#xff0c;判断文件的编码类型 /// </summary> /// <param name“FILE_NAME“>文件路径&…

Vuex的第一次接触

前言&#xff1a;最近在做Vue实现去哪网&#xff0c;想要实现在城市列表页面&#xff0c;点击某个城市的时候&#xff0c;主页的头部的城市会随着改变&#xff0c;就是首页和城市页面有共用的数据要分享&#xff0c;这里使用Vuex 1. Vuex是什么&#xff1f; 是Vue官方推荐的数…

乐刻运动 app android,乐刻运动

乐刻运动是一款广受欢迎的运动健身软件&#xff0c;不论你是想打造完美身材还是减脂减重&#xff0c;乐刻运动都会为你制定严格而又科学的运动健身计划&#xff0c;相当于一个掌上私人的健身教练&#xff0c;时刻关注你的健身状况&#xff0c;快来下载试试吧。乐刻运动软件优势…

新的公司:Dendrite

开始新的学习 好好学好技术&#xff0c;为了未来.ganjuebucuo 转载于:https://www.cnblogs.com/xinhua327/articles/1188299.html

RK3288 mipi屏调试流程

CPU&#xff1a;RK3288 系统&#xff1a;Android 5.1 1、修改kernel/arch/arm/configs/rockchip_defconfig&#xff0c;打开mipi屏开关 # CONFIG_LCD_GENERAL is not set CONFIG_LCD_MIPIy CONFIG_RK_TRSMy # CONFIG_RK32_LVDS is not set # CONFIG_RK32_DP is not set # CONFI…

java IO流小结

Java流操作有关的类或接口&#xff1a; Java流类图结构&#xff1a; 流的概念和作用 流是一组有顺序的&#xff0c;有起点和终点的字节集合&#xff0c;是对数据传输的总称或抽象。即数据在两设备间的传输称为流&#xff0c;流的本质是数据传输&#xff0c;根据数据传输特性将流…

华为android是什么型号,华为手机机型众多,目前这几款最值得入手

华为手机机型众多&#xff0c;目前这几款最值得入手2020-09-22 15:00:033点赞0收藏0评论华为手机可以说是国家手机的代名词。受某种感情的影响&#xff0c;很多人都用华为取代了iPhone。为了表达感情&#xff0c;很多人也纷纷效仿&#xff0c;购买华为手机。但我想说的是支持华…

向Java添加@atomic操作

总览 原子操作如何在Java中工作&#xff0c;OpenJDK / Hotspot中是否存在可以转换为原子的当前替代方法。 反馈 在我以前的文章中&#xff0c; 对可变字段进行原子操作。 有人指出&#xff0c;无论好意如何&#xff0c;“修复”先前的行为都不太可能继续进行。 替代方法是添加…

JSP页面中使用超链接进行传输参数(参数是一个本地磁盘链接)问题

在使用COS组件进行文件上传下载时遇到一个下载问题 刚开始我存的地址格式为&#xff1a;D:\tool\upload发现一直报Error parsing HTTP request header Note: further occurrences of HTTP header p的错误 后来发现使用超链接传参数不支持“\”字符&#xff0c;可能是转义字符…

pt-online-schema-change VS oak-online-alter-table【转】

前言 在上篇文章中提到了MySQL 5.6 Online DDL&#xff0c;如果是MySQL 5.5的版本在DDL方面是要付出代价的&#xff0c;虽然已经有了Fast index Creation&#xff0c;但是在添加字段还是会锁表的&#xff0c;而且在添加删除辅助索引是会加S锁&#xff0c;也就是无法进行写操作。…

The Pilots Brothers' refrigerator

#include<iostream> #include<cstdio> #include<string> using namespace std; int mem[4][4];//用于储存翻转次数&#xff0c;如果是偶数&#xff0c;则相当于没有翻转int main(){char ch;for (int x 0; x<4; x){//按sample的顺序,x代表纵行,y是横列for…

Jax-RS自定义异常处理

使用JEE的好处之一是可用的组件确实是非常标准的。 在使用JAX-RS时&#xff0c;有时您需要控制如何处理异常并将其反馈给用户。 默认情况下&#xff0c;如果引发异常&#xff0c;您将得到一些可怕的HTTP 500内部服务器异常&#xff0c;从而暴露Web服务的内部故障。 考虑以下要…

开张大吉!

新工作&#xff0c;新技术&#xff0c;新开始&#xff01; 开这个博客&#xff0c;希望能记录自己在新公司的点点滴滴&#xff01; 转载于:https://www.cnblogs.com/newman78/archive/2008/05/14/1197227.html

html中评论应该怎么写,HTML-评论

HTML-评论注释是一段代码&#xff0c;任何网络浏览器都将忽略它。最好在HTML代码中添加注释&#xff0c;尤其是在复杂的文档中&#xff0c;以指示文档的各个部分&#xff0c;以及任何其他注释代码的人。注释可帮助您和其他人理解您的代码并提高代码的可读性。HTML注释位于标记之…

vue命令行错误处理

全局安装vue/cli时&#xff1a;npm install -g vue/cli &#xff08;1&#xff09;Error: EACCES: permission denied, access /usr/local/lib/node_modules/vue/cli 原因: 执行命令时没有获得管理员权限 解决办法: 在命令前面加上sudo即可.然后输入电脑的管理员密码操作即可…

RAC(ReactiveCocoa)介绍(一)

最近在学习RAC&#xff0c;之前在iOS工作中&#xff0c;类之间的传值&#xff0c;无非是block、delegate代理、KVO和Notification等这几种方法。在RAC中&#xff0c;同样具备替代block、delegate代理、KVO和Notification&#xff0c;UI target、定时器timer、数据结构等各种方式…

祖国啊

祖国啊&#xff0c;我们用鲜血供奉您...转载于:https://www.cnblogs.com/westsource/archive/2008/05/22/1204827.html