asp.net core mvc之 过滤器

过滤器允许我们在Action执行之前和执行之后去执行一下业务代码

一、过滤器的作用域

1、全局过滤器,   在Startup.cs文件中注册
2、控制器过滤器, 在控制器类上面使用标注
3、action过滤器

二、全局过滤器使用

1、在 core 目录,添加 TestActionFilter.cs 类并继承IActionFilter 实现

    public class TestActionFilter : IActionFilter{public void OnActionExecuted(ActionExecutedContext context){Debug.WriteLine("Action执行之后执行这里的代码");}public void OnActionExecuting(ActionExecutingContext context){Debug.WriteLine("Action执行之前执行这里的代码");}}

2、在Startup.cs 添加全局变量过滤器

注意: 

就算是区域的action 也会跳进这个过滤器里面的。所以关于全局过滤器 大家应该要谨慎使用。因为所有的请求 都会执行过滤器里面的代码。所以如果一些非常耗时的操作 不应该加到全局过滤器里面。
全局过滤器 主要处理一些 比如 防盗链 权限认证这些操作

三、控制器和Action级别过滤器

可以在控制器上面 进行标注使用某个过滤器控制器和Action的过滤器,需要实现一个特性类(如:ResultFilterAttribute)然后在里面 也可以实现OnResultExecuting另外 还可以添加自定义的属性。

特性类包含下面一些

ResultFilterAttribute     结果后过滤器
ActionFilterAttribute     执行前后过滤器
ExecutionFilterAttribute  异常过滤器
FormatFilterAttribute     格式化过滤器
ServiceFilterAttribute    服务过滤器
TypeFilterAttribute

1、core目录添加 MyResultFilterAttribute.cs 类

    public class MyResultFilterAttribute : ResultFilterAttribute{public string Val { get; set; }public override void OnResultExecuted(ResultExecutedContext context){}public override void OnResultExecuting(ResultExecutingContext context){}}

2、控制器,Action调用

 四、重写控制器基类的OnActionExecuted、OnActionExecuting两个方法,达到过滤器的效果

1、Controllers 文件夹添加 BaseController.cs类,继承Controller

    public class BaseController : Controller{public override void OnActionExecuted(ActionExecutedContext context){base.OnActionExecuted(context);Debug.WriteLine("Action执行之后执行这里的代码");}public override void OnActionExecuting(ActionExecutingContext context){base.OnActionExecuting(context);Debug.WriteLine("Action执行之前执行这里的代码");}}

2、所有控制继承BaseController控制器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/178962.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

d3dcompiler_43.dll丢失了怎么办,详细解答和d3dcompiler_43.dll修复方法

以下将为您提供几种处理d3dcompiler_43.dll文件丢失的解决措施,这些方法实用有效,可以帮助我们恢复计算机运行。 一.d3dcompiler_43.dll是什么 在我们开始探讨如何修复d3dcompiler_43.dll文件丢失的问题之前,首先需要了解这个文件的作用。该…

Mars3d的timeline与locationBar样式重合问题处理方案

前置代码:配置了map的mapOptions ,增加了默认的时间轴与下侧状态栏控件 export const mapOptions function (option) { option.control { timeline: { zoom: false, enabled: false }, // 方式1:options中添加控件 ; zoom - 禁止缩放 anim…

SARAS算法

SARAS算法 代码仓库:https://github.com/daiyizheng/DL/tree/master/09-rl Sarsa算法是一种强化学习算法,用于解决马尔可夫决策过程(MDP)问题。它是一种基于值函数的方法,可以用于学习最优策略。本文将介绍Sarsa算法的流程。 S…

Java虚拟机运行时数据区结构详解

Java虚拟机运行时数据区结构如图所示 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 多线程切换时,为了能恢复到正确的执行位置,每条线程…

ajax异步传值以及后端接收参数的几种方式

异步传值 第一种呢,也是最简单的一种,通过get提交方式,将参数在链接中以问号的形式进行传递 // 前台传值方法 // 触发该方法调用ajaxfunction testAjax(yourData) {$.ajax({type: "get", // 以get方式发起请求url: "/yo…

Nginx + RTMP + nginx-http-flv-module 环境搭建(CentOS 7)

文章目录 1. 引言2. 安装 Nginx3. 安装依赖库4. 下载编译 Nginx with RTMP 模块5. 配置 Nginx6. 启动 Nginx7. 推流测试8. 播放测试9. 拓展9.1 鉴权配置9.2 HTTPS 配置9.3 安全性配置 10. 小结 🎉Nginx RTMP nginx-http-flv-module 环境搭建(CentOS 7&…

浙江大学数据结构陈越 第一讲 数据结构和算法

数据结构 数据结构是计算机科学中用来组织和存储数据的方式。它可以理解为一种组织数据的方式,能够有效地管理和操作数据,以及提供对数据进行存储、检索、更新和删除等操作的方法。常见的数据结构包括数组、链表、栈、队列、树和图等,它们各自…

【原创】java+swing+mysql车辆维修管理系统设计与实现

摘要: 车辆维修管理系统是一个用于管理和追踪车辆维修过程的系统,它能够提高效率,减少错误,并提供详细的车辆历史记录,可以帮助车辆维修企业实现信息化管理,提高工作效率和客户满意度,降低运营…

kubernetes集群编排(10)

目录 prometheus监控 部署prometheus 部署nginx监控实例 部署prometheus-adapter prometheus监控 部署prometheus 创建项目仓库并上传镜像 [rootk8s2 helm]# vim prometheus-values.yaml alertmanager:alertmanagerSpec:image:repository: prometheus/alertmanagertag: v0.24.0…

OpenAI发布会震撼AI界,千字文全面解读

你的朋友圈是否被近日 OpenAI 的开发者大会刷屏了?这是预料之中的事。在近日,OpenAI 首度召开了旨在定义未来应用市场的开发者大会。 让我们迅速捕捉 OpenAI 最新的动态以及 ChatGPT 的更新亮点。 1、OpenAI 最新动态 今晨的盛会聚焦于以下要点&#xf…

什么是自动化测试框架?常用的自动化测试框架有哪些?

无论是在自动化测试实践,还是日常交流中,经常听到一个词:框架。之前学习自动化测试的过程中,一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料,加上自己的一些实践,算是对“框架”…

LeetCode - 141. 环形链表 (C语言,快慢指针,配图)

141. 环形链表 - 力扣(LeetCode) 1. 什么是快慢指针 这里我们我们将介绍环形链表的经典解法——快慢指针,简单理解,指针移动快的叫做快指针fast,移动速度慢的叫慢指针slow。一般我们设快指针走两步,慢指针走…