• 无废话MVC入门教程七[Control中使用AOP]


    本文目标

    一、能够使用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.效果

    版权:http://www.cnblogs.com/iamlilinfeng

  • 相关阅读:
    Android studio 3+版本apk安装失败问题
    解决华为手机图片选择无效及产生的open failed: EACCES (Permission denied)错误
    Caused by:java.lang.IllegalStateException at android.media.MediaPlayer._setDataSource(Native Method)
    android尺子的自定义view——RulerView
    自定义shareSDK的验证码短信内容
    解决java.lang.IllegalStateException: The application’s PagerAdapter changed the adapter’s content
    解决Android 7.0 App内切换语言不生效的问题
    ClassNotFoundException和NoClassDefFoundError的解决办法
    viewpager+fragment滑动切换卡顿问题
    ios的并发队列控制库
  • 原文地址:https://www.cnblogs.com/iamlilinfeng/p/2940162.html
Copyright © 2020-2023  润新知