视图是通过在控制器动作中调用View方法来渲染的。第2章中,GuestbookController中的Create动作如下所示。
public ActionResult Create() { return View(); }
在这个例子中,会渲染 Views/Guestbook/Create.csthml视图文件。但MVC框架是如何知道渲染这个特定的视图,而不是其他视图(例如Index.cshtml)的?
调用View方法会返回ViewResult对象,它知道如何渲染一个特定的视图。当不带参数调用该方法时,框架认定待渲染视图的名称应当与动作名相同,默认的视图引擎会在Views/<控制器名>和Views/Shared目录中查找。
如果需要,你可以重写这种以动作名作为视图名的约定。例如,如果视图叫作New.cshtml,而不是Create.cshtml,代码如下。
return View("New");
或者,如果视图不在与控制器同名的子目录中,也可以为视图指定一个应用程序相关的路径:
return View("~/View/SomeOtherDirectory/New.cshtml");