如何以及何时在MVC页面生命周期中调用ViewEngine的RenderView方法?

时间:2014-03-30 09:05:22

标签: asp.net-mvc controller page-lifecycle

我已阅读以下有关MVC页面生命周期的文章:

http://blogs.msdn.com/b/varunm/archive/2013/10/03/understanding-of-mvc-page-life-cycle.aspx?CommentPosted=true#commentmessage

但在第五点的第一节中,提到(引用):

Controller通常要么执行RedirectToAction方法,要么执行RenderView方法当你调用控制器的RenderView()方法时,调用被委托给当前的ViewEngine RenderView()方法。“

(参见上面粗体文字。)在查看控制器class时,我发现那里没有RenderView方法。

所以我找不到代码委托调用ViewEngines RenderView方法的缺失链接,因为Controller类中没有RenderView(方法,委托,虚方法,抽象方法)。

将非常感谢您的解释。提前谢谢。

1 个答案:

答案 0 :(得分:3)

Controller不负责调用RenderView方法。它是执行控制器操作的ControllerActionInvoker,并从控制器操作调用返回的ActionResult上的ExecuteResult方法。所有这些都发生在ExecuteCore的{​​{1}}方法中。

然后根据实际的ActionResult类,会发生不同的事情。如果您返回ControllerViewResult,则PartialViewResult方法会将实际执行委派给视图引擎。最后,视图引擎将调用ExecuteResult方法。

从控制器内部,您不能也不应该渲染视图。这不是MVC中控制器的责任。