System.Web.Mvc.dll执行顺序

时间:2015-03-24 05:14:15

标签: c# asp.net-mvc-4

我试图找出System.Web.Mvc.dll和相关DLL(Razor,WebPages)中代码的粗略流程。

我在MVC Web应用程序中有一个控制器。该控制器有一个返回ViewResult的端点。这个ViewResult下一步去哪儿了?具体来说,View信息如何向下传播到Razor Engine并进行渲染?代码的哪一部分可以进行调用?

我已经尝试对源进行调试,但我很难实现这一目标,所以如果有人熟悉该代码,我希望得到一个概述。对流程的概述将非常有帮助。

1 个答案:

答案 0 :(得分:0)

令人怀疑的是,这实际上可能对某人有所帮助,我在没有调试器的情况下将流程的粗略草图拼凑在一起。

这显然不是100%准确,但有了这个,一般的想法应该是明确的: ViewResultBase.ExecuteResult => ViewResult.FindView => ViewEngineCollection.FindView => VirtualPathProviderViewEngine.FindView => 如果没有找到=> abstract CreateView => RazorViewEngine.CreateView => View.Render(BuildManagedCompiledView.Render:实际编译并创建页面)=> RazorView.RenderView(实际上调用ExecutePageHierarchy命令)