在Asp.netMvc中当你有以下及类似以下需求时你可以使用Filter功能
  1. 判断登录与否或用户权限 
    决策输出缓存 
    防盗链 
    防蜘蛛 
    本地化与国际化设置 
    实现动态Action
Filter是一种声明式编程方式,在Asp.net MVC中它只能限制于Action(或它的Controller)。 
Filter要继承于ActionFilterAttribute抽象类,并可以覆写void OnActionExecuting(ActionExecutingContext)和 
void OnActionExecuted(ActionExecutedContext)
以及void OnResultExecuting(ResultExecutingContext)和 
void OnResultExecuted(ResultExecutedContext)
OnActionExecuting是Action执行前的操作,OnActionExecuted则是Action执行后的操作
而OnResultExecuting是解析ActionResult前执行,OnResultExecuted是解析ActionResult后执行。

一、应用于Action的Filter

下面我给大家一个示例,来看看它的的执行顺序 
首先我们先建立 一个Filter,名字叫做TestFilter
  public class TestFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.HttpContext.Session["temp"] += "TestFilter OnActionExecuting<br/>";
} public override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.HttpContext.Session["temp"] += "TestFilter OnActionExecuted<br/>";
}
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Session["temp"] += "TestFilter OnResultExecuting<br/>";
} public override void OnResultExecuted(ResultExecutedContext filterContext)
{
filterContext.HttpContext.Session["temp"] += "TestFilter OnResultExecuted<br/>";
}
}
然后建立一个Action:
        [TestFilter]//将此Filter应用于Action
public ActionResult filteraction()
{
return View();
}
 
在它的View中写入:
<%Session["temp"] += "View Execute<br/>"; %>
 
最后在其它页面得到Session["temp"]的输出结果:
TestFilter OnActionExecuting
TestFilter OnActionExecuted
TestFilter OnResultExecuting
View Execute
TestFilter OnResultExecuted
由此可得到它们的执行顺序也是如上
 

二、Controller的Filter

将Filter应用在Controller上有2种方式
1.直接将Filter应用在Controller上,如:
    [TestFilter]
public class EiceController : Controller
{
}
 
2.重写Controller内的 
OnActionExecuting/OnActionExecuted/OnResultExecuting/OnResultExecuted的四个方法。
下面我们说几个系统的Filter

三、AcceptVerbs

规定页面的访问形式,如
        [AcceptVerbs(HttpVerbs.Post)]
public ActionResult Example(){
return View();
}
页面只能以Post形式访问,即表单提交。

四、ActionName

规定Action的名称。
应用场景:如果不想用方法名做为Action名,或Action名为关键字的话,如
       [ActionName("class")]
public ActionResult Example(){
return View();
}
 

五、NonAction

当前方法仅是普通方法不解析为Action

六、OutputCache

为Action添加缓存
        [OutputCache(Duration = 60, VaryByParam = "*")]
public ActionResult Example()
{
return View();
}
 

七、ValidateInput

该Action可以接受Html等危险代码(ASP.NET MVC在aspx中设置<%@ Page 的属性无法完成等同任务。)
        [ValidateInput(false)]
public ActionResult Example()
{
return View();
}
 

八、ValidateAntiForgeryTokenAttribute

用于验证服务器篡改。
        [ValidateAntiForgeryToken]
public ActionResult Example()
{
return View();
}

ASP.NET MVC 第六回 过滤器Filter的更多相关文章

  1. Asp.Net MVC学习总结之过滤器详解(转载)

    来源:http://www.php.cn/csharp-article-359736.html   一.过滤器简介 1.1.理解什么是过滤器 1.过滤器(Filters)就是向请求处理管道中注入额外的 ...

  2. ASP.NET MVC中有四种过滤器类型

    在ASP.NET MVC中有四种过滤器类型

  3. Asp.Net MVC 3【Filters(过滤器)】

    这里分享MVC里的Filters(过滤器),什么是MVC里的过滤器,他的作用是什么? 过滤器的请求处理管道中注入额外的逻辑.他们提供了一个简单而优雅的方式来实现横切关注点.这个术语是指所有对应用程序的 ...

  4. [转]ASP.NET MVC 入门9、Action Filter 与 内置的Filter实现(介绍)

    有时候你想在调用action方法之前或者action方法之后处理一些逻辑,为了支持这个,ASP.NET MVC允许你创建action过滤器.Action过滤器是自定义的Attributes,用来标记添 ...

  5. ASP.NET MVC 第五回 ActionResult的其它返回值

    我们上边所看到的Action都是return View();我们可以看作这个返回值用于解析一个aspx文件.而它的返回类型是ActionResult如 public ActionResult Inde ...

  6. ASP.NET MVC 4.0的Action Filter

    有时候你想在调用action方法之前或者action方法之后处理一些逻辑,为了支持这个,ASP.NET MVC允许你自定义创建action过滤器.Action过滤器是自定义的Attributes,用来 ...

  7. MVC和Web API 过滤器Filter

    MVC和Web API Filter(过滤器) ASP.NET MVC 支持以下类型的操作筛选器: ·        授权筛选器.这些筛选器用于实现IAuthorizationFilter和做出关于是 ...

  8. ASP.NET MVC 入门9、Action Filter 与 内置的Filter实现(介绍)

    原帖地址:http://www.cnblogs.com/QLeelulu/archive/2008/10/09/1307660.html 有时候你想在调用action方法之前或者action方法之后处 ...

  9. [ASP.NET MVC 小牛之路]11 - Filter

    Filter(筛选器)是基于AOP(面向方面编程)的设计,它的作用是对MVC框架处理客户端请求注入额外的逻辑,以非常简单优美的方式实现横切关注点(Cross-cutting Concerns).横切关 ...

随机推荐

  1. Android开源项目发现---ActionBar篇(持续更新)

    1. ActionBarSherlock 鼎鼎大名, 为Android所有版本提供统一的ActionBar,解决4.0以下ActionBar的适配问题 项目地址:https://github.com/ ...

  2. Deep Learning论文笔记之(八)Deep Learning最新综述

    Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...

  3. js常用操作代码

    页面前进后退<input type=button value=刷新 onclick="window.location.reload()"><input type= ...

  4. [FJSC2014]滑行

    [题目描述] 首长NOI惨跪,于是去念文化课了.现在,他面对一道物理题. 现在有一个小滑块可以在地面上滑行,地面上被划分成不同的区域,使得小滑块在不同的区域内部有一个不同的速度上限. 小滑块在(0,0 ...

  5. 通过 Azure Media Encoder 降低编码成本

    John Deutscher  Azure 媒体服务首席项目经理 正如在我们的定价页面上宣布的那样,我们引入了一种只根据输出千兆字节数收取编码费用的全新定价模型.之前的/传统模型是根据输入和输出千兆字 ...

  6. 计算几何(容斥原理,圆交):HDU 5120 Intersection

    Matt is a big fan of logo design. Recently he falls in love with logo made up by rings. The followin ...

  7. IIS短文件漏洞修复

    近期网站系统被扫描出漏洞:IIS短文件/文件夹漏洞 漏洞级别:中危漏洞 漏洞地址:全网站 漏洞描述:IIS短文件名泄露漏洞,IIS上实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举获取服务器根目录中的文 ...

  8. Windows 8 Hyper-V虚拟机功能(转载)

    刚才看见一兄弟w500折腾win8 hyper-v功能,普及下吧,欢迎各位斧正 Windows 8 中 Hyper-V 3.0 的 CPU 支持说明 Windows 8 将直接内置 Hyper-V 3 ...

  9. MyEclipe 配置 ivy 插件

    在 MyEclipse 装插件绝对不是技术的问题.只要你有足够的耐心和时间. 经过两次试验,在 MyEclipse 配置插件大概流程如下. 配置ivy:   1.打开配置中心     2.选择[Sof ...

  10. eclipse 反编译class 文件 插件-jad

    1.下载 jad.exe  http://pan.baidu.com/s/1i3Ga33n 2.下载jadeclipse http://pan.baidu.com/s/1bn4H1iZ  放在ecli ...