本系列主要翻译自《ASP.NET MVC Interview Questions and Answers 》- By Shailendra Chauhan,想看英文原版的可访问自行下载。该书主要分为两部分,ASP.NET MVC 5、ASP.NET WEB API2。本书最大的特点是以面试问答的形式进行展开。通读此书,会帮助你对ASP.NET MVC有更深层次的理解。由于个人技术水平和英文水平也是有限的,因此错误在所难免,希望大家多多留言指正。系列导航
本节主要讲解布局页(Layout)的使用
Q40. 什么是 ASP.NET MVC的布局页(Layouts)?
Ans. Layouts(布局页)是用来使asp.net mvc中的views保持一致的外观体验。与webforms的master pages功能相似,但比其更加简单且可扩展性更强。下面是一个布局页的代码展示:
@ViewBag.Title
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@RenderBody()
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts",required: false)
可以使用layout为你的网站定义一个通用的模板。layout可以直接在view的顶部直接声明:
@{
Layout = "~/Views/Shared/SiteLayout.cshtml";
}
Q41. 介绍下ASP.NET MVC中Sections(节)?
Ans. 通过section可以在layout中指定占用一块内容区域。可以在view中按以下方式定义section。
@section header{
Header Content
}
在layout中通过@RenderSection("header")去渲染上面定义的section。
默认来说,如果在layout中定义了需要渲染的section,那么在view中就必须实现。但可以通过以下方式,限定section是可选的。@RenderSection("header",false)
备注:View只能定义已经在layout中指定渲染的section,否则会抛出异常。
Q42. RenderBody 和 RenderPage 的作用是?
Ans. RenderBody 方法是在layout页面中调用的,是用来渲染呈现子页面/视图。它类似于webform引擎中master页中的ContentPlaceHolder。一个layout页面中只能有一个 RenderBody 方法。
@RenderBody()
@RenderPage("~/Views/Shared/_Header.cshtml")
@RenderPage("~/Views/Shared/_Footer.cshtml")
@RenderSection("scripts",false)
@section scripts{
|