zoukankan      html  css  js  c++  java
  • 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.效果

  • 相关阅读:
    java.lang.NoSuchMethodError:antlr.collections.AST.getLine() I
    T7 java Web day01 标签HTML
    T6 s1 day19
    T5 s5 Day18
    T5 s4 Day 17
    T5 s3 day16
    T5 s2 Day 15
    T5 s1 day14
    T4 S03 day 12
    T4 S01 day1
  • 原文地址:https://www.cnblogs.com/FredWang/p/4228649.html
Copyright © 2011-2022 走看看