将 AC# 函数注入所有 ActionResult

Ima*_*man 3 c# asp.net-mvc

我们有一个 Asp.net MVC 项目,它有超过 1000 个 ActionResult,我需要为它们全部添加一个 C# 函数来检查会话的值。那么你有什么提议来做这件事呢?下面这两行有一些我的 Controller 和 ActionResult 的例子:

    public partial class CRMController : Controller
    {
       public ActionResult OrganizationCategory()
       {
        //I want add a C# function here 
       }
    }
    public partial class BaseInfoController : Controller
    {
       public ActionResult Lead()
       {
         //I Want Add a C# Function here
       }
     }
Run Code Online (Sandbox Code Playgroud)

myb*_*ame 6

您可以为此使用ActionFilters

基本 ActionFilterAttribute 类具有以下可以覆盖的方法:

OnActionExecuting – 在执行控制器操作之前调用此方法。OnActionExecuted – 在执行控制器操作后调用此方法。OnResultExecuting – 在执行控制器操作结果之前调用此方法。OnResultExecuted – 在执行控制器操作结果后调用此方法。

这里是完整的代码示例!

 public class LogActionFilter : ActionFilterAttribute

 {
      public override void OnActionExecuting(ActionExecutingContext filterContext)
      {
           Log("OnActionExecuting", filterContext.RouteData);       
      }

      public override void OnActionExecuted(ActionExecutedContext filterContext)
      {
           Log("OnActionExecuted", filterContext.RouteData);       
      }

      public override void OnResultExecuting(ResultExecutingContext filterContext)
      {
           Log("OnResultExecuting", filterContext.RouteData);       
      }

      public override void OnResultExecuted(ResultExecutedContext filterContext)
      {
           Log("OnResultExecuted", filterContext.RouteData);       
      }

      private void Log(string methodName, RouteData routeData)
      {
           var controllerName = routeData.Values["controller"];
           var actionName = routeData.Values["action"];
           var message = String.Format("{0} controller:{1} action:{2}", methodName, controllerName, actionName);
           Debug.WriteLine(message, "Action Filter Log");
      }
 }

 [LogActionFilter]
 public class HomeController : Controller
 {
      public ActionResult Index()
      {
           return View();
      }

      public ActionResult About()
      {

           return View();
      }
 }
Run Code Online (Sandbox Code Playgroud)