首页 > 代码库 > MVC之Control中使用AOP
MVC之Control中使用AOP
原文转载自http://www.cnblogs.com/iamlilinfeng/archive/2013/03/02/2940162.html
本文目标
一、能够使用Control中的AOP实现非业务需求的功能
本文目录
一、ActionFilterAttribute类
二、实现自定义Attribute
一、ActionFilterAttribute类
Action筛选条件的基类
1 using System; 2 3 namespace System.Web.Mvc 4 { 5 // Summary: 6 // Represents the base class for filter attributes. 7 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)] 8 public abstract class ActionFilterAttribute : FilterAttribute, IActionFilter, IResultFilter 9 {10 // Summary:11 // Initializes a new instance of the System.Web.Mvc.ActionFilterAttribute class.12 protected ActionFilterAttribute();13 14 // Summary:15 // Called by the ASP.NET MVC framework after the action method executes.16 //17 // Parameters:18 // filterContext:19 // The filter context.20 public virtual void OnActionExecuted(ActionExecutedContext filterContext);21 //22 // Summary:23 // Called by the ASP.NET MVC framework before the action method executes.24 //25 // Parameters:26 // filterContext:27 // The filter context.28 public virtual void OnActionExecuting(ActionExecutingContext filterContext);29 //30 // Summary:31 // Called by the ASP.NET MVC framework after the action result executes.32 //33 // Parameters:34 // filterContext:35 // The filter context.36 public virtual void OnResultExecuted(ResultExecutedContext filterContext);37 //38 // Summary:39 // Called by the ASP.NET MVC framework before the action result executes.40 //41 // Parameters:42 // filterContext:43 // The filter context.44 public virtual void OnResultExecuting(ResultExecutingContext filterContext);45 }46 }
OnActionExecuting:在Action执行之前执行该方法
OnActionExecuted:在Action执行之后执行该方法
OnResultExecuting:在Result执行之前执行该方法
OnResultExecuted:在Result执行之后执行该方法
二、实现自定义Attribute
在MVC框架基础上实现自定义Attribute只需实现ActionFilterAttribute中的虚方法即可
1.代码
1 using System.Web.Mvc; 2 3 namespace MVC3.Demo.App_Code 4 { 5 public class LogActionFilter : ActionFilterAttribute 6 { 7 public string LogMessage { get; set; } 8 9 public override void OnActionExecuting(ActionExecutingContext filterContext)10 {11 filterContext.HttpContext.Response.Write(@"在Action执行之前执行" + LogMessage + "<br />");12 base.OnActionExecuting(filterContext);13 }14 15 public override void OnActionExecuted(ActionExecutedContext filterContext)16 {17 filterContext.HttpContext.Response.Write(@"在Action执行之后执行" + LogMessage + "<br />");18 base.OnActionExecuted(filterContext);19 }20 21 public override void OnResultExecuting(ResultExecutingContext filterContext)22 {23 filterContext.HttpContext.Response.Write(@"在Result执行之前执行" + LogMessage + "<br />");24 base.OnResultExecuting(filterContext);25 }26 27 public override void OnResultExecuted(ResultExecutedContext filterContext)28 {29 filterContext.HttpContext.Response.Write(@"在Result执行之后执行" + LogMessage + "<br />");30 base.OnResultExecuted(filterContext);31 }32 }33 }
2.使用
1 [LogActionFilter(LogMessage = "日志写入:Validation方法")]2 public ActionResult Validation()3 {4 return View();5 }
3.效果
MVC之Control中使用AOP
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。