在Asp.netMvc中当你有以下及类似以下需求时你可以使用Filter功能
  判断登录与否或用户权限
  决策输出缓存
  防盗链
  防蜘蛛
  本地化与国际化设置
  实现动态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没有魔法——ASP.NET MVC 过滤器(Filter)

    上一篇文章介绍了使用Authorize特性实现了ASP.NET MVC中针对Controller或者Action的授权功能,实际上这个特性是MVC功能的一部分,被称为过滤器(Filter),它是一种面 ...

  2. ASP.NET MVC 过滤器(一)

    ASP.NET MVC 过滤器(一) 前言 前面的篇幅中,了解到了控制器的生成的过程以及在生成的过程中的各种注入点,按照常理来说篇幅应该到了讲解控制器内部的执行过程以及模型绑定.验证这些知识了.但是呢 ...

  3. Asp.net Mvc 过滤器执行顺序

    Asp.net Mvc 过滤器执行顺序: IAuthorizationFilter(OnAuthorization)----->IActionFilter(OnActionExecuting)- ...

  4. ASP.NET MVC 过滤器(三)

    ASP.NET MVC 过滤器(三) 前言 本篇讲解行为过滤器的执行过程,过滤器实现.使用方式有AOP的意思,可以通过学习了解过滤器在框架中的执行过程从而获得一些AOP方面的知识(在顺序执行的过程中, ...

  5. ASP.NET MVC 过滤器(四)

    ASP.NET MVC 过滤器(四) 前言 前一篇对IActionFilter方法执行过滤器在框架中的执行过程做了大概的描述,本篇将会对IActionFilter类型的过滤器使用来做一些介绍. ASP ...

  6. ASP.NET MVC 过滤器(五)

    ASP.NET MVC 过滤器(五) 前言 上篇对了行为过滤器的使用做了讲解,如果在控制器行为的执行中遇到了异常怎么办呢?没关系,还好框架给我们提供了异常过滤器,在本篇中将会对异常过滤器的使用做一个大 ...

  7. 反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑) C#中缓存的使用 C#操作redis WPF 控件库——可拖动选项卡的TabControl 【Bootstrap系列】详解Bootstrap-table AutoFac event 和delegate的分别 常见的异步方式async 和 await C# Task用法 c#源码的执行过程

    反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑)   背景介绍: 为了平衡社区成员的贡献和索取,一起帮引入了帮帮币.当用户积分(帮帮点)达到一定数额之后,就会“掉落”一定数量的“帮帮 ...

  8. ASP.NET MVC过滤器

    在ASP.NET MVC中有个重要特性就是过滤器,使得我们在MVC程序开发中更好的控制浏览器请求的URL,不是每个请求都有响应内容,只有特定得用户才有.园子里关于过滤器的资料也有很多,这篇文章主要是记 ...

  9. Asp.net mvc自定义Filter简单使用

    自定义Filter的基本思路是继承基类ActionFilterAttribute,并根据实际需要重写OnActionExecuting,OnActionExecuted,OnResultExecuti ...

随机推荐

  1. Django中的cookie与session

    cookie与session的实现原理 HTTP被设计为”无状态”,每次请求都处于相同的空间中. 在一次请求和下一次请求之间没有任何状态保持,我们无法根据请求的任何方面(IP地址,用户代理等)来识别来 ...

  2. 爬虫技术实战 | WooYun知识库

    爬虫技术实战 | WooYun知识库 爬虫技术实战 大数据分析与机器学习领域Python兵器谱-大数据邦-微头条(wtoutiao.com) 大数据分析与机器学习领域Python兵器谱

  3. Spring 的注册与注入

    之前和同学老是爱混淆注册与注入.今天再看一遍感觉多了一些理解. 注册就是声明bean.就是让spring能够找到这个bean服务. 注入就是把bean(A)加入到另一个bean(B)的属性中.让另外一 ...

  4. jquery 弹出层

    <!DOCTYPE html> <html>     <head>         <meta charset="utf-8">   ...

  5. android生成二维码

    新建项目 布局截图如下(一个输入框,一个按钮,一个imageview),输入想要的东西(文字,数字,网站链接等)然后点击按钮生成二维码,然后可以扫描识别. 首先需要一个谷歌的一个jar包 activi ...

  6. Ehcache简单说明及使用

    EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存 ...

  7. OC封装的TLV数据格式解析库

    作者:朱克锋 邮箱:zhukefeng@iboxpay.com 转载请注明出处:http://blog.csdn.net/linux_zkf TLV是一种可变格式,意思就是: Type类型, Leng ...

  8. iOS开发总结-UIWebView 集成 浏览器

    // // detailWebViewController.m // BJ // // Created by shirenfeng on 16/11/6. // Copyright © 2016年 c ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(4)-构建项目解决方案 创建EF DataBase Frist模式

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(4)-构建项目解决方案 创建EF DataBase Frist模式 进行本次文章之前,我们可能需要补充一些 ...

  10. 给考研计划报考“管理学科学与project”方向大学生的建议(大二阶段)

    [来信]丁老师: 你好.在做学习计划前能了解到PDCA循环,着实感到受益匪浅. 这一理念不仅适用于质量管理体系.也适用于一切循序渐进的管理工作. 了解PDCA循环后.对此次学习计划的制定起到一定的导向 ...