• 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

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

     

     

     

     

  • 相关阅读:
    Windows下Android开发环境搭建
    解决Win7下打开或关闭Windows功能空白一片
    C#中得到程序当前工作目录和执行目录的一些方法
    创业者必看的小故事
    Sql Server 2005外围应用应用配置器打不开了怎么办
    vs2005无法Web调试
    SQL Server 全局变量
    转 document.documentElement与document.body
    [转]使用SSMA将Oracle数据库转成SQL Server 2008
    Delphi 2009、C++Builder2009正式发布
  • 原文地址:https://www.cnblogs.com/fengjiqiang123/p/14916145.html
Copyright © 2020-2023  润新知