布局页和创建带布局页的视图是配合使用的
Razor的布局有助于使应用程序中的多个视图保持一致的风格,与Web Forms中的母版页效果是一样的。也可以将布局页理解为公共的模板。公共模板包括一个或多个占位符,视图为这些占位符提供内容。
1.1. 创建布局页
对于使用Visual Studio 2013 IDE开发工具创建的ASP.NET MVC模版,会自动创建一些布局页。如下图所示:
在Views文件夹中的“Shared”文件夹中存放的cshtml文件就是视图文件。“Shared”文件夹不是必须的。
现在创建一个自己的布局页:
在图中选择“MVC 5布局页(Razor)“,如下图所示:
这就是ASP.NET MVC Razor布局页,其中有一个重要的占位符就是@RenderBody()方法,相当于ASP.NET MasterPage中的ContentPlaceHolder标记。用来标记使用这个布局的视图将渲染它们的主要内容的位置。那么如果多个视图都使用同一个布局页,则就可以使用这个布局显示一致的外观。
1.2. 创建带布局页的视图
ASP.NET MVC带布局页的视图就是ASP.NET WebForm中带母版页的Web窗体,也就是内容页。
在图中选择“带有布局的MVC 5视图页(Razor)“:
在图中选择我们刚才创建的布局页,点击“确定“按钮。
现在已经创建一个具有布局的视图。此视图默认什么内容也没有,现在输入一些内容:
现在在BaWei控制器中创建一个Show()操作方法,并返回刚才创建的视图。
运行一下:
现在修改一下布局页_LayoutPage1.cshtml:
在布局页中简单的添加了一些样式,再刷新一下刚才的页面:
可见,在布局页中所做的修改,在任何其它的页面中都会生效。
ViewStart视图
如果很多页面使用了同一个布局页,可以将这个布局放在一个名称为_ViewStart.cshtml页面中。此页面会先于任何视图执行,可以自动的应用到任何视图中。所以在视图中就不必要使用如下代码来指定布局页了:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
默认_ViewStart.cshtml引用的是:~/Views/Shared/_Layout.cshtml视图。在前面我们创建的视图都是基于该布局视图呈现的。
可见,使用_ViewStart.cshtml确实方便很多,对于统一的外观,可以使用_ViewStart.cshtml进行统一配置,如果某个视图需要单独的布局,可以在视图中使用Layout属性重写即可。