• Asp.net mvc基础(十二)过滤器Filter


    AOP(面向切面编程)是一种架构思想,用于把公共的逻辑放到一个单独的地方,这样就不用每个地方都写重复的代码了。相当于:一夫当关,万夫莫开

    在Asp.net mvc中提供了四种过滤器接口实现了这种AOP机制,分别是:IAuthorizationFilter,IActionFilter,IResultFilter,IExceptionFilter

     

    注意:每次执行Action方法的时候,都会执行过滤器

    1.IAuthorizationFilter

    场景:一般用来检查当前用户是否有Action的执行权限,在每个Action被执行前执行OnAuthorization方法

    使用方法:

    1.创建一个实现IAuthorizationFilter接口的类

    2.添加类到Global.asax中

    参考案例:登录系统

     

    filterContext.ActionDescriptor.ActionName 获取要执行的Action的名字。

    filterContext.ActionDescriptor.ControllerDescriptor.ControllerName 获取要执行的Controller的名字。

    filterContext.Result如果赋值了,那么就不会再执行Action了,而是以"filterContext.Result"的值作为执行结果。

    filterContext.HttpContext.Response.Redirect("地址"); 和filterContext.Result不同,这句执行完,还是会执行Action方法的。

    在过滤器中推荐使用:filterContext.Result = new RedirectResult("路径");

    2.IActionFilter

    IActionFilter也是在每个Action被执行前执行OnActionExecuting方法,每个Action执行完毕后再执行OnActionExecuted方法。和IAuthorizationFilter的区别是IAuthorizationFilter再IActionFilter之前执行。

    3.IResultFilter

    IResultFilter是在每个ActionResult的前后执行IResultFilter。

    4.IExceptionFilter

    当Action执行发生未处理异常的时候执行OnException方法

    获取异常代码:Exception ex=filterContext.Exception

    总结:只需要编写一次,在其他地方就可以执行了。

     

     

     

     

  • 相关阅读:
    根据访问属性进行差异化数据加载
    前人挖坑,后人填坑
    也让盲人拥抱互联网
    谈谈D2
    Android数据库大批量数据插入优化
    framework中编译anroid工程并在模拟器上运行
    简单JNI使用demo
    解决javah生成c头文件时找不到android类库的问题
    JNI的native代码中打印日志到eclipse的logcat中
    Android.mk简介<转>
  • 原文地址:https://www.cnblogs.com/fengjiqiang123/p/14916145.html
Copyright © 2020-2023  润新知