概述
布局用来创建统一的外观(泛一点来说,就是html中的head等无关页面通用的部分),用vs2012创建默认的mvc4项目之后,布局文件为:Views \Shared\_Layout.cshml,而Views下的_ViewStart.cshml则是用来指定布局文件,只有下面一行代码:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
它会将此布局应用到当前Views中所有的页面中,如果不用此布局,则要在视图中自行指定布局,语法同上面代码一样,所以重要的是这个_ViewStart.cshml,它就像一个入口一样 ,如果用oo来理解,则可以说它是其他视图的基类(当在视图中指定了布局,则会替代_ViewStart.cshml中的设定)。
(如果使用了区域,则每个区域下的都会有一个_ViewStart.cshml文件,其配置同上面的概念一样)。
布局文件的一般样式
下面的代码来自w3School,它是一个布局文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")"></script>
</head>
<body>
<ul id="menu">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("Movies", "Index", "Movies")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
</ul>
<section id="main">
@RenderBody()
<p>Copyright W3schools 2012. All Rights Reserved.</p>
</section>
</body>
</html>
如果一个视图A应用了这个布局,A中的内容将填充@RenderBody()的位置,如果要用A中的section来填充布局文件的任何部分,则只需在布局文件中指定位置加上下面一段代码:
@RenderSection("target", required: false)
@Section target{……代码……}