ASP.NET MVC中四种过滤器类型介绍
简介
mvc的过滤器类型有四种,分别如下:
过滤器类型 | 接口 | 默认实现 | 描述 |
---|---|---|---|
Action | IActionFilter | ActionFilterAttribute | 在动作方法之前及之后运行 |
Result | IResultFilter | ActionFilterAttribute | 在动作结果被执行之前和之后运行 |
AuthorizationFilter | IAuthorizationFilter | AuthorizeAttribute | 首先运行,在任何其它过滤器或动作方法之前 |
Exception | IExceptionFilter | HandleErrorAttribute | 只在另一个过滤器、动作方法、动作结果弹出异常时运行 |
Demo 下载
链接:https://pan.baidu.com/s/1q6Cxw0-Ea1lFbu3_cBl8UA
提取码:59vn
Action、Result
新建一个MyCustormFilter类, 该类继承 ActionFilterAttribute,可以重写父类的 OnActionExecuting、OnActionExecuted、OnResultExecuting、OnResultExecuted等方法,具体含义如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;namespace Demo.App_Start
{public class MyCustormFilter : ActionFilterAttribute{/// <summary>/// Action执行前/// </summary>/// <param name="filterContext"></param>public override void OnActionExecuting(ActionExecutingContext filterContext){filterContext.HttpContext.Response.Write("Action执行前<br />");base.OnActionExecuting(filterContext);}/// <summary>/// Action执行后/// </summary>/// <param name="filterContext"></param>public override void OnActionExecuted(ActionExecutedContext filterContext){filterContext.HttpContext.Response.Write("Action执行后<br />");base.OnActionExecuted(filterContext);}/// <summary>/// 加载 "视图" 前执行/// </summary>/// <param name="filterContext"></param>public override void OnResultExecuting(ResultExecutingContext filterContext){filterContext.HttpContext.Response.Write("加载视图前执行 OnResultExecuting <br/>");base.OnResultExecuting(filterContext);}/// <summary>/// 加载"视图" 后执行/// </summary>/// <param name="filterContext"></param>public override void OnResultExecuted(ResultExecutedContext filterContext){filterContext.HttpContext.Response.Write("加载视图后执行 OnResultExecuted <br/>");base.OnResultExecuted(filterContext);}}
}
Index标记MyCustormFilter特性
[MyCustormFilter]
public ActionResult Index()
{return View();
}
AuthorizeAttribute
新建一个TestAuthorizeAttribute类, 该类继承 AuthorizeAttribute,可以重写父类的 OnAuthorization等方法,具体含义如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;namespace Demo.App_Start
{/// <summary>/// 授权过滤器 --在Action过滤器前执行/// </summary>public class TestAuthorizeAttribute: AuthorizeAttribute{/// <summary>/// 当进程请求授权时调用。/// </summary>/// <param name="filterContext"></param>public override void OnAuthorization(AuthorizationContext filterContext){filterContext.HttpContext.Response.Write("授权过滤器 --在Action过滤器前执行<br/>");}}
}
给Index加上TestAuthorizeAttribute特性
[TestAuthorizeAttribute]
[MyCustormFilter]
public ActionResult Index()
{return View();
}
运行结果如下图
Exception
新建一个TestHandleError类, 该类继承 HandleErrorAttribute,可以重写父类的 OnException等方法,具体含义如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;namespace Demo.App_Start
{/// <summary>/// 异常处理 过滤器/// </summary>public class TestHandleError: HandleErrorAttribute{public override void OnException(ExceptionContext filterContext){//1.获取异常对象Exception ex = filterContext.Exception;//2.记录异常日志//3.重定向友好页面filterContext.Result = new RedirectResult("~/error.html");//4.标记异常已经处理完毕filterContext.ExceptionHandled = true;base.OnException(filterContext);}}
}
在Action上面加TestHandleError
通常这样的异常处理我们是放在全局过滤器里面
例如:
using Demo.App_Start;
using System.Web;
using System.Web.Mvc;namespace Demo
{public class FilterConfig{public static void RegisterGlobalFilters(GlobalFilterCollection filters){filters.Add(new HandleErrorAttribute());//添加全局过滤器filters.Add(new TestHandleError());}}
}
ASP.NET MVC中四种过滤器类型介绍相关推荐
- [转载]Asp.net MVC中Controller返回值类型
Asp.net MVC中Controller返回值类型 在mvc中所有的controller类都必须使用"Controller"后缀来命名 并且对Action也有一定的要求: 必须 ...
- ASP.NET MVC中常用的ActionResult类型
一.定义 MVC中ActionResult是Action的返回结果.ActionResult 有多个派生类,每个子类功能均不同,并不是所有的子类都需要返回视图View,有些直接返回流,有些返回字符串等 ...
- Smart Form中四种窗口类型的区别
smart form中4中类型的窗口: Main Window:主窗口 主窗口一般用于数据的列表显示,用于LOOP循环显示:当然也可显示非列表内容. 一个Form中只能包含一个主窗口. 主窗口可分页输 ...
- 【原创】MT4中四种交易类型详解
1.Buy 1) Buy Limit Ø 指以低于现价的价位限价买入,是交易人认为价位跌到某个点位,买入比较安全了. Ø 买入限价,在当前价格下方挂买单( ...
- Asp.net MVC 中Controller返回值类型ActionResult
目录 1.返回ViewResult视图结果,将视图呈现给网页 2. 返回PartialViewResult部分视图结果,主要用于返回部分视图内容,在View/Shared目录下创建ViewUserCo ...
- Java中四种线程池介绍
个人资源与分享网站:http://xiaocaoshare.com/ Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而是一个执行线程的工具.真正的线 ...
- ASP.NET MVC中实现多个按钮提交的几种方法
有时候会遇到这种情况:在一个表单上需要多个按钮来完成不同的功能,比如一个简单的审批功能. 如果是用webform那不需要讨论,但asp.net mvc中一个表单只能提交到一个Action处理,相对比较 ...
- 四种依恋类型_“我值得被爱吗?”| 如何在亲密关系中培养安全型依恋
缺爱的人最后会和什么样的人在一起?文 | 徐非儿(简单心理认证·实习咨询师) 如果我们尝试给"缺爱"下一个笼统的定义,那可能是:在成长过程中缺乏被关爱的经历,例如总是遭到主要养育者 ...
- 学习笔记 | c++中四种类型cast(强制)转换
c++中四种cast转换 C++四种强制转换方式,应用场景,细节 1.const_cast 用于将const变量转为非const. 用来修饰类型的const或volatile属性.除了去掉const或 ...
最新文章
- Linux Web服务器网站故障分析常用的命令
- ubuntu10.10+android 搭建Opencv
- CodeForces - 817D Imbalanced Array(单调栈)
- 安卓logcat工具apk_backdoorapk 安卓APK后门捆绑脚本
- spring的钩子_spring提供的钩子,你知道哪些
- java并发包作者lee_Java的一些并发包
- Oracle遇到的一些坑
- 02277微型计算机原理及应用,微型计算机原理及应用(课程代码:02277).doc
- 全国各地市统计年鉴汇总2021
- Word文档转换:如何使用Aspose.words在Java中将Word和图像转换为PDF
- java审批工作流,值得一读!
- Fragment already added 解决方式
- 利用python和Sen2cor对Sentinel2进行批量大气校正
- 骄傲狮子座的感情世界(图
- 自学Java的心路历程
- 计算机(了解)\注释\变量\数据类型\格式化输出\debug
- yarn报错Tarball is not in network and can not be located in cache
- vue单独设置页面背景
- 单节点Rancher离线安装的关键一步
- spoolsv.exe占用cpu 100%的解决方法