我试图找出System.Web.Mvc.dll和相关DLL(Razor,WebPages)中代码的粗略流程。
我在MVC Web应用程序中有一个控制器。该控制器有一个返回ViewResult的端点。这个ViewResult下一步去哪儿了?具体来说,View信息如何向下传播到Razor Engine并进行渲染?代码的哪一部分可以进行调用?
我已经尝试对源进行调试,但我很难实现这一目标,所以如果有人熟悉该代码,我希望得到一个概述。对流程的概述将非常有帮助。
答案 0 :(得分:0)
令人怀疑的是,这实际上可能对某人有所帮助,我在没有调试器的情况下将流程的粗略草图拼凑在一起。
这显然不是100%准确,但有了这个,一般的想法应该是明确的: ViewResultBase.ExecuteResult => ViewResult.FindView => ViewEngineCollection.FindView => VirtualPathProviderViewEngine.FindView => 如果没有找到=> abstract CreateView => RazorViewEngine.CreateView => View.Render(BuildManagedCompiledView.Render:实际编译并创建页面)=> RazorView.RenderView(实际上调用ExecutePageHierarchy命令)