这更像是对 MVC 3 如何工作的“架构理解”。我真的很想知道 MVC 如何知道为给定的控制器操作调用哪个视图。我可以猜测,当我们使用 Visual Studio 为控制器操作创建视图时,它会将这些绑定存储在项目的某种文件中,对吗?
提前致谢。Marcelo Myara 里约热内卢/巴西
这更像是对 MVC 3 如何工作的“架构理解”。我真的很想知道 MVC 如何知道为给定的控制器操作调用哪个视图。我可以猜测,当我们使用 Visual Studio 为控制器操作创建视图时,它会将这些绑定存储在项目的某种文件中,对吗?
提前致谢。Marcelo Myara 里约热内卢/巴西
它是使用“约定优于配置”的思想完成的。
如果您使用没有视图的随机操作,您可以看到它实际上是在尝试一堆不同的约定,寻找匹配项:
public ActionResult SomeActionWithNoView()
{
return View();
}
它在Views/ControllerName或Views/Shared文件夹中查找与操作名称匹配的视图文件(.aspx、.ascx、.cshtml 或 .vbhtml 扩展名) 。
未找到视图“SomeActionWithNoView”或其主视图,或者没有视图引擎支持搜索到的位置。搜索了以下位置:
~/Views/Home/SomeActionWithNoView.aspx
~/Views/Home/SomeActionWithNoView.ascx
~/Views/Shared/SomeActionWithNoView.aspx
~/Views/Shared/SomeActionWithNoView.ascx
~/Views/Home/SomeActionWithNoView.cshtml
~/Views/Home/SomeActionWithNoView.vbhtml
~/Views/Shared/SomeActionWithNoView.cshtml
~/Views/Shared/SomeActionWithNoView.vbhtml
可以使用/Views根目录中的_ViewStart.cshtml设置默认视图布局:
@{
Layout = "~/Views/Shared/MyDefaultLayout.cshtml";
}
可以根据需要在各个视图中删除或更改它。