8

Controller.OnActionExecuted在之前还是之后被调用?ActionResult.Execute

是否有事件发生顺序的时间线?我无法单独使用 google-fu 找到任何东西。

4

2 回答 2

9

Controller.OnActionExecuted 首先被调用。

请参阅MSDN 上的这篇文章,它涵盖了 MVC 的控制器管道。

  1. 收到申请的第一个请求
  2. 执行路由
  3. 创建 MVC 请求处理程序
  4. 创建控制器
  5. 执行控制器
  6. 调用动作
  7. 执行结果
于 2012-08-28T01:26:45.270 回答
9

下面的快照显示了执行是如何发生的

http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/understanding-action-filters-cs

动作过滤器包含在控制器动作执行之前和之后执行的逻辑。例如,您可以使用操作过滤器来修改控制器操作返回的视图数据。

结果过滤器包含在执行视图结果之前和之后执行的逻辑。例如,您可能想在视图呈现给浏览器之前修改视图结果。

MVC 生命周期

图片提供:- http://www.dotnetinterviewquestions.in/article_explain-mvc-application-life-cycle_210.html

文章详情:- https://www.codeproject.com/Articles/556995/ASP-NET-MVC-interview-questions-with-answers

任何 Web 应用程序都有两个主要的执行步骤,首先是了解请求,然后根据请求的类型发出适当的响应。MVC 应用程序生命周期没有什么不同,它有两个主要阶段,首先创建请求对象,然后将我们的响应发送到浏览器。

创建请求对象: -创建请求对象有四个主要步骤。以下是相同的详细说明。

步骤 1 填充路由: - MVC 请求被映射到路由表,路由表又指定要调用的控制器和操作。因此,如果请求是第一个请求,那么第一件事就是用路由集合填充路由表。这种路由表的填充发生在 global.asax 文件中。

步骤 2 获取路由: - 根据发送的 URL,“UrlRoutingModule”搜索路由表以创建“RouteData”对象,该对象包含要调用的控制器和操作的详细信息。

步骤 3 创建请求上下文: - “RouteData”对象用于创建“RequestContext”对象。

步骤 4 创建控制器实例: - 该请求对象被发送到“MvcHandler”实例以创建控制器类实例。一旦创建了控制器类对象,它就会调用控制器类的“Execute”方法。

创建响应对象: - 此阶段有两个步骤执行操作,最后将响应作为结果发送到视图。

于 2016-07-02T13:18:14.787 回答