Asp.Net Mvc - 在ActionResult.Execute之前或之后调用onactionexecuted吗?

时间:2012-08-28 01:19:15

标签: asp.net-mvc

Controller.OnActionExecuted之前或之后调用ActionResult.Execute吗?

事件发生的顺序中是否有时间轴?我一个人找不到google-fu。

2 个答案:

答案 0 :(得分:9)

首先调用Controller.OnActionExecuted。

请参阅MSDN上的this post,它涵盖了MVC的控制器管道。

  
      
  1. 收到第一份申请请求
  2.   
  3. 执行路由
  4.   
  5. 创建MVC请求处理程序
  6.   
  7. 创建控制器
  8.   
  9. 执行控制器
  10.   
  11. 调用操作
  12.   
  13. 执行结果
  14.   

答案 1 :(得分:7)

Below snapshot shows how execution take Place

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

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

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

MVC Life Cycle

图片礼貌: - 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请求映射到路由表,路由表又指定要调用的控制器和操作。因此,如果请求是第一个请求,则首先要使用routes集合填充路由表。路由表的填充发生在global.asax文件中。

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

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

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

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