首页 > 代码库 > 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