Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.NET MVC中的控制器操作后调用方法_Asp.net_Asp.net Mvc - Fatal编程技术网

在ASP.NET MVC中的控制器操作后调用方法

在ASP.NET MVC中的控制器操作后调用方法,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我过去认为,在所有控制器方法最终完成后,将调用以下方法: protected override void EndExecute(IAsyncResult asyncResult) 现在调用所有重写方法,然后调用控制器方法。您知道在所有方法之后调用什么重写方法吗?您可以使用操作筛选器,每次执行任何方法时都会调用它。您可以通过匹配方法名称对其进行筛选 公共类LogActionFilter:ActionFilterAttribute { public override void OnA

我过去认为,在所有控制器方法最终完成后,将调用以下方法:

protected override void EndExecute(IAsyncResult asyncResult)

现在调用所有重写方法,然后调用控制器方法。您知道在所有方法之后调用什么重写方法吗?

您可以使用操作筛选器,每次执行任何方法时都会调用它。您可以通过匹配方法名称对其进行筛选

公共类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");
      }

 }

有关更多详细信息,请访问:

也许操作筛选器可以执行您想执行的任何操作?您可以提供一个示例吗?您想做什么?你能说得更具体一点吗?我想在所有控制器方法的末尾向ViewBag添加一些内容。要添加的项目可能因每种方法而有所不同。例如什么?从何处获取要添加到viewbag的数据?