ASP.NET MVC重点教程一周年版 第六回 过滤器Filter

在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();
}

时间: 2024-08-02 20:12:03

ASP.NET MVC重点教程一周年版 第六回 过滤器Filter的相关文章

ASP.NET MVC 重点教程一周年版 第六回 过滤器Filter

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

ASP.NET MVC 重点教程一周年版 第十一回 母版页、用户自定义控件及文件上传

母版页(Master) 1.母版页是与Controller无关的,母版页只是一个View文件,而没有任何Controller与之相对应. 2.其实在ASP.NET MVC中View的aspx与母版页并不像WebForm中那样紧密关联. 例如我想更换一个aspx的母版页,只要在Action中return 时指定所要使用的Master即可: 如图我有2个Master文件,而/Views/Home/Index.aspx则为 这时我们如果想要使用Site2做为Master,只要在Action中retur

ASP.NET MVC重点教程一周年版 第十一回 母版页、用户自定义控件及文件上传

母版页(Master) 1.母版页是与Controller无关的,母版页只是一个View文件,而没有任 何Controller与之相对应. 2.其实在ASP.NET MVC中View的aspx与母版页并不像WebForm中 那样紧密关联. 例如我想更换一个aspx的母版页,只要在Action中return 时指定所要使用 的Master即可: 如图我有2个 Master文件,而/Views/Home/Index.aspx则为 这时我们如果想要使用Site2做为Master,只要在Action中r

ASP.NET MVC重点教程一周年版 第八回 Helper之演化

凡事出现必有原因 就像Filter,它是为了解决在一类的Action之前或之后执行统一的代码而产生的. 而Helper则是为了方便View的开发而产生的. 下面我们来解决几个问题,来看看Helper是怎么演化出来的. 起 题目:如何在View中写一个超级连接连接到主页? 这个问题看起来很好回答: <a href="/home/index">首页</a> 承 其实上面这种不能称之为方案的写法其实是最好的,没有调用任何的方法,仅用纯的HTML就解 决了问题. 但是如

ASP.NET MVC重点教程一周年版 第七回 UrlHelper

这节讲 一下ASP.NET MVC中的Helper. 何谓Helper,其实就是在View中为了实现一些灵活功能而写的方法组. 其实ASP.NET MVC的View是Aspx的页面,本身可以声明定义方法,那为什么要有Helper呢? 其实无非是将界面与逻辑分离,而且Asp.net MVC也并不只支持Aspx一种View(还可以扩展出来 很多),在扩展包中,也有Castle的NVelocity引擎和Boo,以及ViewSpark的页面. 所以,如果在Aspx中定义方法的话会影响其扩展性和可移植性.

ASP.NET MVC重点教程一周年版 第三回 Controller与View

这节我们让ASP.NET MVC真正的跑起来 一.新建Controller 首先我们自己新建一 个新的Controller在Controllers上点右键,添加,Controller选项 之后出现一个对话框: 这里我们将 之起名为EiceController 附注一下,这里是个纯广告,无兴趣可略过此行:www.eice.com.cn 为您建立Web2.0社交网站 默认生成的代码如下: //记不记得前面讲过的,所有 Controller都要继承于Controller类 public class E

ASP.NET MVC 重点教程一周年版 第十回 请求Controller

    其实我们通常遇到的请求方式无非get/post,但是有很多Web开发人员仍然对二者分不清.     get即通过URL中的QueryString向服务器端传值的方式,它的数据是可见的,可post则是通过一个postdata包向服务器传值,post方式可以传送更多数据(如上传文件),也更安全(如登录).     本文将演示各种通过客户端页面(即最终生成的页面)向Controller提交请求以及在Controller中接受的方式. 约定     本文所有的示例都将是演示一个登录过程,但并不关

ASP.NET MVC 重点教程一周年版 第七回 UrlHelper

这节讲 一下ASP.NET MVC中的Helper. 何谓Helper,其实就是在View中为了实现一些灵活功能而写的方法组. 其实ASP.NET MVC的View是Aspx的页面,本身可以声明定义方法,那为什么要有Helper呢? 其实无非是将界面与逻辑分离,而且Asp.net MVC也并不只支持Aspx一种View(还可以扩展出来很多),在扩展包中,也有Castle的NVelocity引擎和Boo,以及ViewSpark的页面. 所以,如果在Aspx中定义方法的话会影响其扩展性和可移植性.而

ASP.NET MVC 重点教程一周年版 第三回 Controller与View

这节我们让ASP.NET MVC真正的跑起来 一.新建Controller 首先我们自己新建一个新的Controller在Controllers上点右键,添加,Controller选项   之后出现一个对话框:   这里我们将之起名为EiceController 附注一下,这里是个纯广告,无兴趣可略过此行:www.eice.com.cn为您建立Web2.0社交网站 默认生成的代码如下: //记不记得前面讲过的,所有Controller都要继承于Controller类 public class E