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

本次学习的文件结构如下

image

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

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

image

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

image

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

image

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

image

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

image

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

image

查看运行结果

image

一张图来记忆:

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

image

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

查看运行结果

image

4.授权过滤器

作用范围:在Action方法前

image

5.异常处理过滤器

image

更多精彩内容请看:http://www.cnblogs.com/2star
原文地址:https://www.cnblogs.com/kimisme/p/4525432.html