c# - 向所有 ActionResult 注入(inject) C# 函数

标签 c# asp.net-mvc

我们有一个 Asp.net MVC 项目,它有超过 1000 个 ActionResult,我需要为它们添加一个 C# 函数来检查 Session 的值。 那么,您对此有何提议? 以下两行包含我的 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
       }
     }

最佳答案

您可以使用 ActionFilters为了这。

The base ActionFilterAttribute class has the following methods that you can override:

OnActionExecuting – This method is called before a controller action is executed. OnActionExecuted – This method is called after a controller action is executed. OnResultExecuting – This method is called before a controller action result is executed. OnResultExecuted – This method is called after a controller action result is executed.

这里是完整的代码示例!

 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();
      }
 }

关于c# - 向所有 ActionResult 注入(inject) C# 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39695292/

相关文章:

c# - 使用来自 WCF WebService 的模型

asp.net-mvc - ASP.NET MVC 自定义授权

c# - 如何使用 JSON 嵌套对象

c# - 找不到不同程序集中的 ASP.NET Core ViewComponents

c# - 如何先创建 EntityFramework 代码的可视化模型

c# - NumericUpDown ValueChanged 防止默认?

c# - LINQ 中 DateTime 比较的性能

c# - WPF:如何使用 MVVM 将命令绑定(bind)到 ListBoxItem?

c# - ASP.NET MVC 将 ID 传递给 ActionLink

c# - MVC 访问 Controller 中的应用程序变量