MVC中的执行流程

时间:2009-12-30 21:11:38

标签: asp.net-mvc functional-programming request internal control-flow

我正在尝试详细学习MVC,我想知道内部的确切功能流是什么,在意义上哪些功能(重要功能)被称为它们做什么< / strong>应用程序启动时以及在我们继续操作时在我们的应用程序中编写的控制器操作之外调用哪些函数。

2 个答案:

答案 0 :(得分:19)

以下是详细步骤:

  1. 请求进入ASP.NET
  2. ASP.NET路由通过调用RouteCollection.GetRouteData
  3. 查找路由匹配
  4. 这会在每条路线上调用RouteBase.GetRouteData,直到找到匹配为止
  5. 匹配路由的IRouteHandler具有名为
  6. GetHttpHandler方法
  7. MvcHandler运行(ProcessRequest被调用)
  8. MVC控制器工厂在CreateController
  9. 中找到并创建控制器
  10. ControllerActionInvoker确定在InvokeAction
  11. 中运行的操作
  12. AuthorizationFilter阶段执行(这包括控制器本身的授权方法)
  13. ActionExecuting阶段执行
  14. 执行请求的操作方法
  15. ActionExecuted阶段执行
  16. 如果有结果对象,则ResultExecuting阶段执行
  17. 如果结果未被取消,则执行ActionResult的ExecuteResult方法
  18. ResultExecuted阶段执行
  19. 如果发生错误,则执行Exception阶段
  20. 我还想向您推荐我在ASP.NET MVC的许多演示文稿中使用的MVC Snake Diagram。这是完整的图片:alt text

    我链接的博客文章描述了ASP.NET MVC中有关数据如何流经应用程序的一些概念。

答案 1 :(得分:7)

查看Redgates的免费“The ASP.NET MVC Request Handling Pipeline”海报执行流程

Steven Sanderson's MCV book了解详情。