zoukankan      html  css  js  c++  java
  • Asp.Net.Core5 筛选器

    一,ActionFilterAttribute

     1 public class CustomActionFilterAttribute: ActionFilterAttribute
     2     {
     3         public override void OnActionExecuting(ActionExecutingContext context)
     4         {
     5             base.OnActionExecuting(context);
     6         }
     7         public override void OnActionExecuted(ActionExecutedContext context)
     8         {
     9             base.OnActionExecuted(context);
    10         }
    11 
    12         public override void OnResultExecuting(ResultExecutingContext context)
    13         {
    14             base.OnResultExecuting(context);
    15         }
    16 
    17         public override void OnResultExecuted(ResultExecutedContext context)
    18         {
    19             base.OnResultExecuted(context);
    20         }
    21     }
    View Code

    二,ExceptionFilterAttribute

     public class CustomExceptionFilterAttribute : ExceptionFilterAttribute
        {
            //出现异常处理
            public override void OnException(ExceptionContext context)
            {
                //返回错误信息
                context.Result = new JsonResult(new
                {
                    errcode = 1,
                    message = context.Exception.Message
                });
            }
        }
    View Code

    三,ResultFilterAttribute

     public class CustomResultFilterAttribute: ResultFilterAttribute
        {
            public CustomResultFilterAttribute() { } //构造函数
            //执行前
            public override void OnResultExecuting(ResultExecutingContext context)
            {
                ////请求方法对象
               // context.HttpContext.Response;
                //context.HttpContext.Request;
                base.OnResultExecuting(context);
            }
            //执行后
            public override void OnResultExecuted(ResultExecutedContext context)
            {
                base.OnResultExecuted(context);
            }
        }
    View Code

    四,作用域

    1,Action  标识Filter

    2,Controller  标识Filter

     [Filters.CustomResultFilter]
     [Filters.CustomExceptionFilter]
     [Filters.CustomActionFilter]
     public IActionResult Index()
     {
         return View();
     }

    3,所有Action ,Controller 

    在Startup.cs 添加    options.Filters.Add(typeof(Filters.CustomeActionFilter));

     public void ConfigureServices(IServiceCollection services)
            {
                services.AddRazorPages().AddRazorRuntimeCompilation();
                services.AddSession();//注册Session
                services.AddControllersWithViews(options =>
                {
                    //添加筛选
                    options.Filters.Add(typeof(Filters.CustomeActionFilter));
                });
            }

    五,筛选器执行-顺序设置

    默认属性可以直接设置为具体int指

     [Filters.CustomExceptionFilter(Order =int.MinValue)]
    public IActionResult Index()
    {
         return View();
    }
    //全局 
    options.Filters.Add(typeof(Filters.CustomeActionFilter),int.MaxValue);

    六,ServiceFilterAttribute

    Action中(CustomeActionFilter) 将从依赖注入容器DI中获取得到


    public void ConfigureServices(IServiceCollection services) {
    services.AddScoped<Filters.CustomeActionFilter>();

    }

    [ServiceFilter(typeof(Filters.CustomeActionFilter),Order =int.MaxValue)]
    public IActionResult Index() { return View(); }

    七,TypeFilterAttribute

    不需注册依赖注入,自带DI容器实现的依赖。

    Microsoft.Extensions.DependencyInjection.ObjectFactory  对类型实例化

    [TypeFilter(typeof(Filters.CustomeActionFilter),Order =int.MaxValue)]
    public IActionResult Index()
    {
       return View();
    }
  • 相关阅读:
    安装MySQL时出现黄色感叹号,提示3306已被占用
    python使用xlrd读取excel数据时,整数变小数的解决办法
    Xenu Link Sleuth 简单好用的链接测试工具 使用说明
    python的with用法(参考)
    关于Selenium HTMLTestRunner 无法生成测试报告
    关于python-生成HTMLTestRunner测试报告
    如何出(改编)一道ACM算法题?
    近期思考(2019.07.20)
    爱,死亡和机器人 第十四集 齐马蓝 中文字幕(Python处理utf8文件获取想要的内容)
    LeetCode 75. Sort Colors (python一次遍历,模拟三路快排的分割操作)
  • 原文地址:https://www.cnblogs.com/Linc2010/p/14335390.html
Copyright © 2011-2022 走看看