MVC过滤器基本使用
/// <summary>
/// 执行代码前执行
/// </summary>
/// <param name="filterContext"></param>
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//1.显示触发过滤器action方法的名称
string actionName = filterContext.ActionDescriptor.ActionName;
filterContext.HttpContext.Response.Write("ActionName=" + actionName + "</br>");
//2.显示触发过滤器action方法所在的控制器
string ctrlName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
filterContext.HttpContext.Response.Write("ControllerName=" + ctrlName + "</br>");
//3.判断当前action方法是否贴有[HttpGet]特性标签
bool isTrue = filterContext.ActionDescriptor.IsDefined(typeof(HttpGetAttribute), false);
filterContext.HttpContext.Response.Write("当前action是否贴有[httpGet]特性" + isTrue + "</br>");
//4.获取当前action方法上贴有[HttpGet]特性标签的实例
object[] httpGets = filterContext.ActionDescriptor.GetCustomAttributes(typeof(HttpGetAttribute), false);
foreach (object obj in httpGets)
{
filterContext.HttpContext.Response.Write("获取当前action方法上贴有[HttpGet]特性标签的实例:" + obj.ToString() + "</br>");
}
//5.记录当前action方法的实际参数
ParameterDescriptor[] dics = filterContext.ActionDescriptor.GetParameters();
foreach(ParameterDescriptor dic in dics)
{
//打印action参数名称
filterContext.HttpContext.Response.Write("记录当前action方法的实际参数:" + dic.ParameterName.ToString() + "</br>");
}
base.OnActionExecuting(filterContext);
}
/// <summary>
/// 执行代码后执行
/// </summary>
/// <param name="filterContext"></param>
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
}
/// <summary>
/// 返回结果前执行
/// </summary>
/// <param name="filterContext"></param>
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
base.OnResultExecuting(filterContext);
}
/// <summary>
/// 返回结果后执行
/// </summary>
/// <param name="filterContext"></param>
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
}
public override void OnException(ExceptionContext filterContext)
{
//1.获取异常对象
Exception ex= filterContext.Exception;
//2.将异常写入日志
//2.1写入记录日志的具体实现过程略...
//3.告诉mvc框架,过滤器已处理异常,不需要额外处理
filterContext.ExceptionHandled = true;
base.OnException(filterContext);
}
<customErrors mode="On" defaultRedirect="Error">
<error statusCode="404" redirect="~/ErrorMgr/P404" />
<error statusCode="500" redirect="~/ErrorMgr/P500"/>
</customErrors>
MVC过滤器基本使用的更多相关文章
- mvc过滤器学习(1)
mvc 过滤器结构图 AuthorizeAttribute AuthorizeAttribute是IAuthorizationFilter的默认实现,添加了Authorize特性的Action将对用户 ...
- ASP.NET MVC 过滤器(一)
ASP.NET MVC 过滤器(一) 前言 前面的篇幅中,了解到了控制器的生成的过程以及在生成的过程中的各种注入点,按照常理来说篇幅应该到了讲解控制器内部的执行过程以及模型绑定.验证这些知识了.但是呢 ...
- ASP.NET MVC 过滤器(三)
ASP.NET MVC 过滤器(三) 前言 本篇讲解行为过滤器的执行过程,过滤器实现.使用方式有AOP的意思,可以通过学习了解过滤器在框架中的执行过程从而获得一些AOP方面的知识(在顺序执行的过程中, ...
- ASP.NET MVC 过滤器(四)
ASP.NET MVC 过滤器(四) 前言 前一篇对IActionFilter方法执行过滤器在框架中的执行过程做了大概的描述,本篇将会对IActionFilter类型的过滤器使用来做一些介绍. ASP ...
- ASP.NET MVC 过滤器(五)
ASP.NET MVC 过滤器(五) 前言 上篇对了行为过滤器的使用做了讲解,如果在控制器行为的执行中遇到了异常怎么办呢?没关系,还好框架给我们提供了异常过滤器,在本篇中将会对异常过滤器的使用做一个大 ...
- asp.net MVC 过滤器使用案例:统一处理异常顺道精简代码
重构的乐趣在于精简代码,模块化设计,解耦功能……而对异常处理的重构则刚好满足上述三个方面,下面是我的一点小心得. 一.相关的学习 在文章<精简自己20%的代码>中,讨论了异常的统一处理,并 ...
- MVC过滤器详解
MVC过滤器详解 APS.NET MVC中(以下简称"MVC")的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理. ...
- MVC过滤器使用案例:统一处理异常顺道精简代码
重构的乐趣在于精简代码,模块化设计,解耦功能……而对异常处理的重构则刚好满足上述三个方面,下面是我的一点小心得. 一.相关的学习 在文章<精简自己20%的代码>中,讨论了异常的统一处理,并 ...
- ASP.NET MVC 过滤器详解
http://www.fwqtg.net/asp-net-mvc-%E8%BF%87%E6%BB%A4%E5%99%A8%E8%AF%A6%E8%A7%A3.html 我经历了过滤器的苦难,我想到了还 ...
- ASP.NET MVC过滤器(一)
MVC过滤器是加在 Controller 或 Action 上的一种 Attribute,通过过滤器,MVC 网站在处理用户请求时,可以处理一些附加的操作,如:用户权限验证.系统日志.异常处理.缓存等 ...
随机推荐
- ALOS卫星介绍
ALOS卫星介绍 作者:ALOS 文章来源:ALOS 点击数: 更新时间:2013-6-21 摘要:日本地球观测卫星计划主要包括2个系列:大气和海洋观测系列以及陆地观测系列.先进对地 ...
- TF卡速度测试对比 Class数越高速度越快
存储卡(TF卡)是手机扩展存储的大杀器,让你多装n部学习资料,多装n个外语听力练习.除了装东西外,存储卡性能不佳也会影响手机的整体性能以及体验的.本文主要针对Android手机,我是懒人,但我讨厌懒人 ...
- Codechef Nuclear Reactors 题解
There are K nuclear reactor chambers labelled from 0 to K-1. Particles are bombarded onto chamber 0. ...
- makefile之cmake入门
cmake是一款生成makefile的软件:在生成makefile之前,首先是写一个CMakeLists.txt文件: 以下为典型例子: 先看目录tree, 在test文件夹中有:include目录, ...
- Spring——jar包详解
org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spring 2.5.6的时候需要a ...
- SQL学习之HAVING过滤分组
1.SQL除了能用Group By分组数据之外,SQL还允许过滤分组,规定包括那些分组,排除那些分组.例如,你可能想要列出至少有两个订单的所有顾客.为此,必须基于完整的分组而不是个别的行进行过滤. 基 ...
- Asp.Net Memcached安装配置使用、安全性
Memcached安装配置使用 一,准备 你需要有一下软件: VS.NET(05/08) SQLSERVER memcached服务器端以及客户端类 ...
- notepad++ 必装插件
nppftp ;FTP客户端,你懂的: explorer:设置常用文件链接:打开当前文件路径:
- ASP.NET MVC Controller向View传值方式总结
Controller向View传值方式总结 总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是: ViewBag ViewData TempData 向普通Vie ...
- 大数据之scala基本语法学习
package edu.snnu.test object list2 { //把字符串转化成一个char类型的list "99 Red Balloons".toList //> ...