013. MVC5过滤器

微软提供了4中过滤器:

1.Action过滤器: 在Action方法执行之前和Action方法执行之后, 会执行此过滤器中的代码. 比如在执行public ActionResult Index()方法之前或之后; 也可以说是在方法执行前或执行后;

接口: IactionFilter    抽象类名: ActionFilterAttribute   添加一个实现类 MyActionFilterAttribute.cs , 这里这个Attribute后缀必须添加

2. View视图结果渲染过滤器:在视图渲染之前或之后做一点处理;

接口: IresultFilter

3. 全局错误异常过滤器: 当整个网站出现异常, 就来执行此过滤器中代码

接口:

4. 校验过滤器(身份验证过滤器):不常用


 

使用Action过滤器:

添加一个MyActionFilterAttribute类, 继承ActionFilterAttribute  , 一般不去实现接口, 而是去继承这个抽象类, 而这个继承类应该以Attribute作为后缀, 右键Models目录→添加一个MyActionFilterAttribute类:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;namespace MasterDemo.Models
{//如果想要全局的标签都要起到作用, 则需要再在这个类上也打上一个标签, 只要把 AllowMultiple = false, 改成true, 就能使该过滤器全局起到作用, 下面这个仅仅是他的默认特性[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]public class MyActionFilterAttribute: System.Web.Mvc.ActionFilterAttribute{public string Name{get; set;}public override void OnActionExecuting(ActionExecutingContext filterContext){base.OnActionExecuting(filterContext);filterContext.HttpContext.Response.Write("我是执行前打出来的" + Name);}public override void OnActionExecuted(ActionExecutedContext filterContext){base.OnActionExecuted(filterContext);filterContext.HttpContext.Response.Write("我是执行后打出来的" + Name);}public override void OnResultExecuting(ResultExecutingContext filterContext){base.OnResultExecuting(filterContext);filterContext.HttpContext.Response.Write("我是在结果执行前打出来的" + Name);}public override void OnResultExecuted(ResultExecutedContext filterContext){base.OnResultExecuted(filterContext);filterContext.HttpContext.Response.Write("我是结果执行后打出来的" + Name);}}
}

控制器的引用:

 

运行结果:

Index.cshtml内容:

@{ViewBag.Title = "Home Page";
}<div><h1>ASP.NET</h1></div><div><h2>Getting started</h2>
</div>

 运行结果:

 

打到类上, 此时访问Index页面还是上面的运行结果, 如果访问About页面, 结果则是  我是执行前打出来的Home/我是打在类上的特性; 类上的特性适用于整个类内的所有方法, 但是如果该方法上有了特性, 则以该方法上的特性为主

 全局过滤器:

可以用来实现判断用户是否登录, 验证用户身份

截图:

 

代码:

using System.Web;
using System.Web.Mvc;namespace MasterDemo
{public class FilterConfig{//要使用全局过滤器, 则必须在此文件中配置全局过滤器, 全局过滤器, 对每一个类都生效, 当然需要将全局过滤器的类打上前面提到的特性, 比如这里要引用/Models/MyActionFilterAttribute的过滤器, 则需要在此添加, 并且/Models/MyActionFilterAttribute类的前面也要添加新的特性, 这个特性在抽象类上其实也是有的public static void RegisterGlobalFilters(GlobalFilterCollection filters){filters.Add(new HandleErrorAttribute());//添加全局过滤器, 此时访问此程序内所有的页面都将先加载此过滤器, 那么这个过滤器可以用来实现判断用户是否登录filters.Add(new Models.MyActionFilterAttribute() { Name="我是全局"});}}
}

 全局过滤器被调用的时间:

看下图, 可以启动下调试, 看看全局过滤器被调用的时间:

 

转载于:https://www.cnblogs.com/wxylog/p/6414481.html

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

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

相关文章

Val编程-读取汉字

Val编程-读取汉字 Val编程中&#xff0c;对于汉字的读取不是很友好&#xff0c;利用fileget直接读取记事本产生的文件字符串会导致乱码的产生。因为Val只支持使用utf-8进行编码&#xff0c;因此读取的文本需要进行utf-8格式转换。 在GBK中&#xff0c;汉字占两个字节。并且…

【pyqt5学习】——菜单栏(QMenu())、工具栏QToolBar学习

目录 1、菜单栏&#xff08;QMenu()&#xff09;——一般在窗口顶部 1&#xff09;创建菜单栏步骤 2&#xff09;信号与方法 3&#xff09;实操 2、工具栏——一般在菜单栏下方 1&#xff09;创建步骤 2&#xff09;方法与信号 信号&#xff1a; 方法&#xff1a; 3&am…

Java核心技术及面试指南 异常部分的面试题归纳以及答案

4.2.4.1 throw和throws有什么差别&#xff1f;异常&#xff08;Exception&#xff09;和错误&#xff08;Error&#xff09;有什么差别&#xff1f; throw语句表示抛出异常&#xff0c;由方法体内的语句处理。throws语句用在方法声明后面&#xff0c;表示如果抛出异常&#xff…

win7win10 配置wlan热点

win7 & win10 系统自带wlan功能&#xff0c;配置方法如下&#xff1a; 命令行输入: 1. netsh wlan set hostednetwork mode allow ssid "Haha" key12345678 2. netsh wlan start hostednetwork netsh wlan show hostednetwork 转载于:https://www.cnblogs.com/…

java---Socket编程出现的异常种类

.java.net.SocketTimeoutException.这个异常比较常见&#xff0c;socket超时。一般有2个地方会抛出这个&#xff0c;一个是connect的时候&#xff0c;这个超时参数由connect(SocketAddress endpoint,int timeout)中的后者来决定&#xff0c;还有就是setSoTimeout(int timeout)&…

【pyqt5学习】——利用Pyqt5连接打印机(QtPrintSupport、QPrintDialog、QPageSetupDialog)

目录 1、利用QtPrintSupport直接连接打印机——不常用 1&#xff09;基本知识 2&#xff09;完整代码案例 3&#xff09;结果 2、 打印对话框QPrintDialog、打印设置对话框QPageSetupDialog 1&#xff09;弹出打印设置对话框 2&#xff09;弹出打印对话框 注&#xff1a…

Val编程-按键响应模式

由于Val是通过语句gotoxy函数来进行光标移动的&#xff0c;不支持触摸屏与鼠标&#xff0c;因此对于其界面编程有很大的局限。 一般有下面几种模式来进行编程。 1.按键响应模式&#xff08;中断模式&#xff09; 2.轮询模式 一般推荐使用按键响应模式。其原理是对于有按键按下…

[Android]SQLite的使用

Android 数据存储提供了四种存储方式&#xff1a; Shared Preferences 使用键值对&#xff08;Map(key, value)&#xff09;来存储数据 Internal Storage 内部存储&#xff0c;存储在设备内存的 私人数据 External Storage 外部存储&#xff0c;存储在外部设备的 公共数据…

第一百四十五节,JavaScript,同步动画

JavaScript&#xff0c;同步动画 将上一节的&#xff0c;移动透明动画&#xff0c;修改成可以支持同步动画&#xff0c;也就是可以给这个动画方法多个动画任务&#xff0c;让它同时完成 原理&#xff1a; 向方法里添加一个属性&#xff0c;这个属性是一个对象&#xff0c;同步动…

Exchange Server 2016管理系列课件39.新建本地移动请求

场景通过新建本地移动请求&#xff0c;可以很方便的将用户邮箱从一个数据库迁移到另外一个数据库。1&#xff09;跨平台邮件迁移&#xff1b;&#xff08;低exchange迁移到高版本exchange&#xff09;2&#xff09;数据库平衡与优化&#xff1b;&#xff08;企业当中&#xff0…

【数据库学习】——【汇总】MySQL数据库下载与安装(Msi文件安装和免安装版本)、Navicat下载与安装

目录 1、MySQL数据库下载与安装 1&#xff09;MySQL数据库下载 MySQL官网 MySQL数据库下载 2&#xff09;MySQL 通过msi文件安装 3&#xff09;MySQL免安装版本使用 1&#xff09;将免安装包移动到安装的文件夹位置&#xff1b; 2&#xff09;新建data文件夹 3&#xff…

Val编程-文本操作

Val系统相对于高级语言来说&#xff0c;对于文本操作的功能相当的弱。 一般的文本&#xff08;文件夹&#xff09;操作有&#xff1a; 1.新建文本&#xff0c; 2.删除文本&#xff0c; 3.新建文件夹&#xff0c; 4.删除文件夹&#xff0c; 5.文本重命名&#xff0c; 6.文…

Linux高级编程--01.vi命令

VI是Linux/Unix下标配的一个纯字符界面的文本编辑器。由于不支持鼠标功能&#xff0c;也没有图形界面&#xff0c;相关的操作都要通过键盘指令来完成&#xff0c;需要记忆大量命令。因此很多人不大喜欢它&#xff0c;但同时由于键盘的方式往往比鼠标来得快&#xff0c;一旦熟练…

【数据库学习】——纠错:mysql Authentication plugin ‘caching_sha2_password‘ is not supported

目录 1、环境介绍 2、问题描述 3、原因分析 4、 解决方案 1&#xff09;方法一&#xff1a;直接改成mysql_native_password验证方式 2&#xff09;方案二&#xff1a; 利用sql命令将验证机制修改 ① 打开命令行窗口——cmd ② 登录mysql数据库 ③ 查看不同用户名的身份…

xcode中用pods管理第三方库转

安装pods &#xff1a;http://www.cnblogs.com/wangluochong/p/5567082.html 史上最详细的CocoaPods安装教程 --------------------------------------------- 第一步&#xff1a;Cmmand&#xff0b;空格&#xff0c;搜索"终端"&#xff0c;使用cd命令进入到我们项目…

Val编程-界面编程

由于示教盒是一个黑白的分辨率为&#xff08;14*40&#xff09;的液晶屏&#xff0c;用户交互不是很好&#xff0c;界面不友好。而且没有鼠标导航与触摸屏。 界面编程函数 1.void cls() 2.void title(string sText) 3.void put(string sText), void put(num nValue) 4.void put…

【机器学习笔记四】分类算法 - 逻辑回归

参考资料 【1】 Spark MLlib 机器学习实践 【2】 统计学习方法 1、Logistic分布 设X是连续随机变量&#xff0c;X服从Logistic分布是指X具有下列分布函数和密度函数 &#xff0c;。其中u为位置参数&#xff0c;γ为形状参数。如下图&#xff1a; 分布函数以(u,1/2)为中心…

FPFH+ICP点云配准

A, UniformSampling降噪B, ISS计算关键点, FPFH特征在FeatureCloud::setInputCloud中读入点云,并调用processInput进行处理:processInput处理包括: 1, computeSurfaceNormals () 使用NormalEstimation计算得到表面法向量2, computeLocalFeatures () FPFHEstimationKdTreeIS…

【python 学习】——pycharm终端解释器和Python解释器配置

目录 1、pycharm终端运行的时候前面带有PS&#xff0c;是什么意思&#xff0c;怎么变成cmd? 1&#xff09;File——settings 2&#xff09;tools——terminal——shellPath 2、pycharm怎么切换不同的Python解释器&#xff1f; 1&#xff09;File——settings 2&#xff09…

在linux下实现mysql自动备份数据

使用的系统为CentOS&#xff0c;mysql版本为5.6 备份功能主要利用以下功能实现&#xff1a; mysql命令中的mysqldump命令 linux下脚本编写 linux下crontab定时任务的使用 首先确定你要存放脚本的目录和存放备份数据的目录 首先进行以下修改&#xff08;因为在命令行或者脚本中写…