是Controller.OnActionExecuted
在之前还是之后被调用?ActionResult.Execute
是否有事件发生顺序的时间线?我无法单独使用 google-fu 找到任何东西。
是Controller.OnActionExecuted
在之前还是之后被调用?ActionResult.Execute
是否有事件发生顺序的时间线?我无法单独使用 google-fu 找到任何东西。
Controller.OnActionExecuted 首先被调用。
请参阅MSDN 上的这篇文章,它涵盖了 MVC 的控制器管道。
- 收到申请的第一个请求
- 执行路由
- 创建 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”方法。
创建响应对象: - 此阶段有两个步骤执行操作,最后将响应作为结果发送到视图。