_Layout.cshtml类似WebForm中的.master文件
_Layout.cshtml母版页代码:
<!DOCTYPE html>
<html lang="zh">
<head>
<title>@ViewBag.Title - 我的 ASP.NET MVC 应用程序</title>
</head>
<body>
<div id="body">
@RenderSection("featured", required: false)
<section class="content-wrapper main-content clear-fix">
@RenderBody()
</section>
</div>
<footer>
<div class="content-wrapper">
<div class="float-left">
<p>© @DateTime.Now.Year - 我的 ASP.NET MVC 应用程序</p>
</div>
</div>
</footer>
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
</html>
在Home控制器中添加TestRenderBody,并添加视图
public ActionResult TestRenderBody()
{
ViewBag.Message = "这是RenderBody内容";
return View();
}
@{
ViewBag.Title = "TestRenderBody";
}
<h2>@ViewBag.Message</h2>
访问视图 home/TestRenderBody:
前后对比html源码,发现只是将 TestRenderBody视图放到了_Layout.cshtml中的@RenderBody()中了
在layout.cshtml中添加一个 所有页面都可以使用的 footer @RenderSection ,
<footer>
<div class="content-wrapper">
@if (IsSectionDefined("footer"))//如果存在 section footer则展示此页面的footer内容
{
@RenderSection("footer", required: false)//requiered为fasle子页面可以没有此footer,若设置为true则子页面必须添加,否则报错
}
else//没有则默认显示此footer
{
<p>此页面没有定义footer</p>
}
<div class="float-left">
<p>© @DateTime.Now.Year - 我的 ASP.NET MVC 应用程序</p>
</div>
</div>
</footer>
在TestRenderBody.cshtml中添加
@{
ViewBag.Title = "TestRenderBody";
}
<h2>@ViewBag.Message</h2>
@section footer{
<p>我是此页面的页脚</p>
}
效果为: