我已阅读以下有关MVC页面生命周期的文章:
但在第五点的第一节中,提到(引用):
“ Controller通常要么执行RedirectToAction方法,要么执行RenderView方法。当你调用控制器的RenderView()方法时,调用被委托给当前的ViewEngine RenderView()方法。“
(参见上面粗体文字。)在查看控制器class时,我发现那里没有RenderView方法。
所以我找不到代码委托调用ViewEngines RenderView方法的缺失链接,因为Controller类中没有RenderView(方法,委托,虚方法,抽象方法)。
将非常感谢您的解释。提前谢谢。
答案 0 :(得分:3)
Controller不负责调用RenderView
方法。它是执行控制器操作的ControllerActionInvoker
,并从控制器操作调用返回的ActionResult
上的ExecuteResult
方法。所有这些都发生在ExecuteCore
的{{1}}方法中。
然后根据实际的ActionResult类,会发生不同的事情。如果您返回Controller
或ViewResult
,则PartialViewResult
方法会将实际执行委派给视图引擎。最后,视图引擎将调用ExecuteResult
方法。
从控制器内部,您不能也不应该渲染视图。这不是MVC中控制器的责任。