【发布时间】:2012-10-25 23:27:31
【问题描述】:
这更像是对 MVC 3 工作原理的“架构理解”。我真的很想知道 MVC 如何知道为给定的控制器操作调用哪个视图。我可以猜测,当我们使用 Visual Studio 为控制器操作创建视图时,它会将这些绑定存储在项目的某种文件中,对吗?
提前致谢。 马塞洛·米亚拉 里约热内卢/巴西
【问题讨论】:
标签: asp.net-mvc-3 razor view controller
这更像是对 MVC 3 工作原理的“架构理解”。我真的很想知道 MVC 如何知道为给定的控制器操作调用哪个视图。我可以猜测,当我们使用 Visual Studio 为控制器操作创建视图时,它会将这些绑定存储在项目的某种文件中,对吗?
提前致谢。 马塞洛·米亚拉 里约热内卢/巴西
【问题讨论】:
标签: asp.net-mvc-3 razor view controller
这是使用"Convention over Configuration"的思想完成的。
如果你使用一个没有视图的随机动作,你可以看到它实际上是在尝试一堆不同的约定,寻找一个匹配:
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";
}
可以根据需要在各个视图中删除或更改。
【讨论】: