这是来自默认 MVC 3 模板的 About.cshtml:
@{ ViewBag.Title = "About Us"; } <h2>About</h2> <p> Put content here. </p>
我希望在 _ViewStart 文件中可以找到对 _ViewStart 文件的引用About.cshtml,但显然不是。
About.cshtml
我查看了global.asaxand web.config,但我找不到About.cshtml文件是如何与 _ViewStart 文件中的布局“链接”的。
global.asax
web.config
一切都按预期工作,我只想知道引擎盖下发生了什么......
来自ScottGu 的博客:
从 ASP.NET MVC 3 Beta 版本开始,您现在可以在项目的 \Views 文件夹下添加一个名为 _ViewStart.cshtml(或 _ViewStart.vbhtml 用于 VB)的文件: _ViewStart 文件可用于定义您希望在每个视图渲染开始时执行的通用视图代码。例如,我们可以在 _ViewStart.cshtml 文件中编写代码,以编程方式将每个 View 的 Layout 属性默认设置为 SiteLayout.cshtml 文件: 因为这段代码在每个视图的开头执行,我们不再需要在任何单独的视图文件中显式设置布局(除非我们想覆盖上面的默认值)。 重要提示:因为 _ViewStart.cshtml 允许我们编写代码,所以我们可以选择性地使我们的布局选择逻辑更丰富,而不仅仅是一个基本的属性集。例如:我们可以根据访问站点的设备类型来改变我们使用的布局模板——并为这些设备提供优化的手机或平板电脑布局,以及针对 PC/笔记本电脑的桌面优化布局。或者,如果我们正在构建一个供多个客户使用的 CMS 系统或通用共享应用程序,我们可以在访问站点时根据客户(或其角色)选择不同的布局来使用。 这使得 UI 具有很大的灵活性。它还允许您更轻松地编写一次视图逻辑,并避免在多个地方重复它。
从 ASP.NET MVC 3 Beta 版本开始,您现在可以在项目的 \Views 文件夹下添加一个名为 _ViewStart.cshtml(或 _ViewStart.vbhtml 用于 VB)的文件:
_ViewStart 文件可用于定义您希望在每个视图渲染开始时执行的通用视图代码。例如,我们可以在 _ViewStart.cshtml 文件中编写代码,以编程方式将每个 View 的 Layout 属性默认设置为 SiteLayout.cshtml 文件:
因为这段代码在每个视图的开头执行,我们不再需要在任何单独的视图文件中显式设置布局(除非我们想覆盖上面的默认值)。
重要提示:因为 _ViewStart.cshtml 允许我们编写代码,所以我们可以选择性地使我们的布局选择逻辑更丰富,而不仅仅是一个基本的属性集。例如:我们可以根据访问站点的设备类型来改变我们使用的布局模板——并为这些设备提供优化的手机或平板电脑布局,以及针对 PC/笔记本电脑的桌面优化布局。或者,如果我们正在构建一个供多个客户使用的 CMS 系统或通用共享应用程序,我们可以在访问站点时根据客户(或其角色)选择不同的布局来使用。
这使得 UI 具有很大的灵活性。它还允许您更轻松地编写一次视图逻辑,并避免在多个地方重复它。
也看到这个。