在Controller.OnActionExecuted
之前或之后调用ActionResult.Execute
吗?
事件发生的顺序中是否有时间轴?我一个人找不到google-fu。
答案 0 :(得分:9)
首先调用Controller.OnActionExecuted。
请参阅MSDN上的this post,它涵盖了MVC的控制器管道。
- 收到第一份申请请求
- 执行路由
- 创建MVC请求处理程序
- 创建控制器
- 执行控制器
- 调用操作
- 执行结果
醇>
答案 1 :(得分:7)
操作过滤器包含在执行控制器操作之前和之后执行的逻辑。例如,您可以使用操作过滤器来修改控制器操作返回的视图数据。
结果过滤器包含在执行视图结果之前和之后执行的逻辑。例如,您可能希望在将视图呈现给浏览器之前修改视图结果。
图片礼貌: - 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”实例以创建控制器类实例。一旦创建了控制器类对象,它就会调用控制器类的“执行”方法。
创建响应对象: - 此阶段有两个步骤执行操作,最后将响应作为结果发送到视图。