MVC 过滤器

3561人阅读 2021/4/2 17:21 总访问:667146 评论:0 收藏:0 手机
分类: .net mvc

过滤器是一种面向切面的编程思想
可以再不影响原来的逻辑基础上增加自己的逻辑

IActionFilter:        action执行之前与执行之后执行的

IAuthorizationFilter:针对性用来处理权限相关过滤器

IExceptionFilter:   发现异常的时候会执行

IResultFilter:        action返回值的阶段执行,时间节点比较晚,可以把返回值进行一些控制,相对来说使用比较少。

全局过滤器

FilterConfig注入的过滤器就是全局的


过滤器限制控制器级别,过滤器需要是一个特性类(FilterAttribute)

使用时需要引入命名空间,设置过后,过滤器则只对本控制器中的视图产生限制



放在视图上也是同样的道理(只对本视图产生限制


IActionFilter过滤器(执行前执行后)

    public class MyActionFilter: FilterAttribute, IActionFilter
    {
        public void OnActionExecuted(ActionExecutedContext filterContext)
        {
            //action执行之后运行此部分
        }

        public void OnActionExecuting(ActionExecutingContext filterContext)
        {
             //action执行之前运行此部分
        }
    }

IAuthorizationFilter过滤器(执行前)

public class MyActionFilter : FilterAttribute, IAuthorizationFilter 
        {
            public void OnAuthorization(AuthorizationContext filterContext)
            {
               //运行之前会执行此部分(一般用来处理相关权限)
            }
        }

IExceptionfilter过滤器(异常处理)

 public class MyActionFilter : FilterAttribute, IExceptionFilter
        {
            public void OnException(ExceptionContext filterContext)
            {
               //出现异常将会运行到此部分
               
               //异常信息
               string message = filterContext.Exception.Message;
               
               //设置异常是否处理,true将不会输出错误信息(防止异常被用户看到)
                filterContext.ExceptionHandled = true;
            }
        }

IResultFilter过滤器(使用较少)用于从操作成功返回操作结果的执行的筛选器。

  public class MyActionFilter : FilterAttribute, IResultFilter
    {
        //在操作结果执行之后调用。
        public void OnResultExecuted(ResultExecutedContext filterContext)
        {

        }
        //在操作结果执行之前调用。
        public void OnResultExecuting(ResultExecutingContext filterContext)
        {

        }
    }

                                                                            

评价
脚踏实地,一步一个脚印
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
欢迎加群交流技术