ASP.NET MVC AOP-Filter
来源:互联网 发布:淘宝客服转正工作业绩 编辑:程序博客网 时间:2024/05/30 04:44
软件开发模式从面向过程(POP)发展到面向对象(OOP)之后,软件模块之间的组织方式发生了很多变化,衍生出了很多可插拔的模块化组件,给软件的灵活架构方面带来了丰富多彩的内容。面相对象的思维方式可谓功不可没,在日趋复杂的应用系统中,有很多基本的业务逻辑,跟具体的业务关系很小,甚至没有关系,比如日志,参数校验,权限,等等各种常规功能,这时候我们就需要面相切面编程-AOP
ASP.NET MVC 在控制器加载及执行过程中,为了让用户能够扩展控制器执行过程中的功能,提供了让用户重写OnActionExecuting,OnActionExecuted,OnResultExecuting,OnResultExecuted几个方法的机制。这样用户就可以灵活地控制Action和Result的执行过程。其实,这就是AOP在ASP.NET MVC 中最好的实现,也是ASP.NET MVC 在设计中非常具有借鉴意义的部分,为我们设计具有AOP机制的模块具有很好的借鉴意义。
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace AspNetMvcFilterDemo.Filters{ public class MyFilter : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { filterContext.HttpContext.Response.Write("Method Name:OnActionExecuting<br/>"); //输出请求的Controller 与action名称 String controllerName = filterContext.RouteData.Values["controller"].ToString(); String actionName = filterContext.RouteData.Values["action"].ToString(); String message = String.Format("Controller :{0}<br/>action:{1}<br/>", controllerName, actionName); filterContext.HttpContext.Response.Write(message); filterContext.HttpContext.Response.Write("------------------------------------<br>"); //base.OnActionExecuting(filterContext); } public override void OnActionExecuted(ActionExecutedContext filterContext) { filterContext.HttpContext.Response.Write("Method Name:OnActionExecuted<br/>"); //输出请求的Controller 与action名称 String controllerName = filterContext.RouteData.Values["controller"].ToString(); String actionName = filterContext.RouteData.Values["action"].ToString(); String message = String.Format("Controller :{0}<br/>action:{1}<br/>", controllerName, actionName); filterContext.HttpContext.Response.Write(message); filterContext.HttpContext.Response.Write("------------------------------------<br/>"); //base.OnActionExecuted(filterContext); } public override void OnResultExecuting(ResultExecutingContext filterContext) { filterContext.HttpContext.Response.Write("Method Name:OnResultExecuting<br/>"); //输出请求的Controller 与action名称 String controllerName = filterContext.RouteData.Values["controller"].ToString(); String actionName = filterContext.RouteData.Values["action"].ToString(); String message = String.Format("Controller :{0}<br/>action:{1}<br/>", controllerName, actionName); filterContext.HttpContext.Response.Write(message); filterContext.HttpContext.Response.Write("------------------------------------<br/>"); //base.OnResultExecuting(filterContext); } public override void OnResultExecuted(ResultExecutedContext filterContext) { filterContext.HttpContext.Response.Write("Method Name:OnResultExecuted<br/>"); //输出请求的Controller 与action名称 String controllerName = filterContext.RouteData.Values["controller"].ToString(); String actionName = filterContext.RouteData.Values["action"].ToString(); String message = String.Format("Controller :{0}<br/>action:{1}<br/>", controllerName, actionName); filterContext.HttpContext.Response.Write(message); filterContext.HttpContext.Response.Write("------------------------------------<br/>"); //base.OnResultExecuted(filterContext); } }}我们就可以在控制器上使用Attribute
[MyFilter]public ActionResult Index(){ return View();}效果:
0 0
- ASP.NET MVC AOP-Filter
- asp.net mvc filter
- asp.net mvc aop
- ASP.NET MVC 过滤器Filter
- ASP.NET MVC 过滤器Filter
- AOP in Asp.net MVC
- AOP in Asp.net MVC
- ASP.NET MVC的Action Filter
- ASP.NET MVC 四 过滤器Filter
- ASP.NET MVC的Action Filter
- asp.net mvc 下使用 HttpResponse.Filter
- asp.net mvc Filter拦截跳转
- Asp.Net MVC 2.0 Filter基本用法
- ASP.NET MVC学习笔记-----Filter
- ASP.NET MVC中Filter使用
- ASP.NET MVC中Filter使用
- 关于ASP.NET MVC的Filter小记
- ASP.NET MVC的Action Filter
- 归并排序、插入排序、快速排序、二分查找的c++实现
- hdu 1207 汉诺塔II
- Ceph vs Swift - 架构剖析
- JSP播放视频
- Python Path Discussion
- ASP.NET MVC AOP-Filter
- 10步构建APP
- cocos2d开发学习五:精灵节点CCSpriteBatchNode的渲染和纹理集Texture Atlases内存优化
- Asp.Net北大青鸟总结(五)-数据绑定控件
- android中九宫格布局与gridview
- hiho一下 第四十九周(欧拉路的判定)49
- arduino小车入门教学——第二天(电机)
- 2440的nand启动与nor启动
- 初学map做的一点笔记,不求甚解,先会用