码迷,mamicode.com
首页 > Web开发 > 详细

MVC系列学习(十七)-过滤器

时间:2015-05-24 11:32:25      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

本次学习的文件结构如下

技术分享

1.过滤器的几种表示方式

1.1将过滤器 加到方法上,作用范围为该方法

技术分享

1.2将过滤器加到当前类上,作用范围为该类的所有方法

技术分享

1.3添加全局过滤器,作用范围为所有方法

技术分享

2.Action过滤器

作用范围:执行在Action方法前后

2.1代码

public class MyActionFilterAttribute:ActionFilterAttribute
{
    //在Action方法执行之前
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.HttpContext.Response.Write("执行Action方法前-OnActionExecuting<br/>");
        base.OnActionExecuting(filterContext);
    }
    //在Action方法执行之后
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        filterContext.HttpContext.Response.Write("执行Action方法后-OnActionExecuted<br/>");
        base.OnActionExecuted(filterContext);
    }
}

技术分享

2.2运用-获得路由信息及路由对象

技术分享

2.3运用-检查被请求的方法 是否 加了某特性

技术分享

查看运行结果

技术分享

一张图来记忆:

原来是跳过了2,3,即跳过了Action方法的执行,但4,5,6照样执行

技术分享

3.Result过滤器

作用范围:加载“视图”前后,因为有些Action方法不会生成视图,但以下方法照样会执行

代码如下:

public class MyResultFilterAttribute:ActionFilterAttribute
{
    //加载“视图”前执行
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        filterContext.HttpContext.Response.Write("加载视图前执行OnResultExecuting<br/>");
        base.OnResultExecuting(filterContext);
    }
    //加载“视图”后执行
    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        filterContext.HttpContext.Response.Write("加载视图后执行OnResultExecuted<br/>");
        base.OnResultExecuted(filterContext);
    }
}

 

查看运行结果

技术分享

4.授权过滤器

作用范围:在Action方法前

技术分享

5.异常处理过滤器

技术分享

MVC系列学习(十七)-过滤器

标签:

原文地址:http://www.cnblogs.com/2star/p/4525432.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!