ASPNET应用开发与实战第10章 母版页的使用
- 格式:ppt
- 大小:2.29 MB
- 文档页数:29
母版页概述使用 母版页可以为应用程序中的页创建一致的布局。
单个母版页可以为应用程序中的所有页(或一组页)定义所需的外观和标准行为。
然后可以创建包含要显示的内容的各个内容页。
当用户请求内容页时,这些内容页与母版页合并以将母版页的布局与内容页的内容组合在一起输出。
母版页的工作原理母版页实际由两部分组成,即母版页本身与一个或多个内容页。
演练:在Visual Web Developer 中创建和使用 母版页本演练阐释如何创建一个母版页和几个内容页。
母版页使您可以创建一个页面布局(模板页),然后创建各个页面,这些页面包含的内容在运行时与母版页合并。
创建网站如果已经在Visual Web Developer 中创建一个网站(例如,通过执行演练:在Visual Web Developer 中创建基本网页中的步骤创建),可以使用该网站并跳至下一节“创建母版页”。
否则,按照下面的步骤创建一个新的网站和网页。
创建文件系统网站打开Visual Web Developer。
在“文件”菜单上单击“新建网站”。
出现“新建网站”对话框。
在“Visual Studio 已安装的模板”之下单击“ 网站”。
在“位置”框中输入要保存网站页面的文件夹的名称。
例如,键入文件夹名“C:\WebSites”。
在“语言”列表中,单击您想使用的编程语言。
单击“确定”。
Visual Web Developer 创建该文件夹和一个名为Default.aspx 的新页。
创建母版页母版页是用于设置页面外观的模板。
在本节中,将首先创建一个母版页。
然后,使用表格来对母版页进行布局,此母版页具有一个菜单、一个徽标和一个页脚,这些内容将在站点的每个页面中出现。
还将使用内容占位符,这是母版页中的一个区域,可以使用内容页中的信息来替换此区域。
创建母版页在解决方案资源管理器中,右击网站的名称,然后单击“添加新项”。
在“Visual Studio 已安装的模板”之下单击“母版页”。
MVC布局页、模板页使⽤⽅法详细介绍⼀、Views⽂件夹 -> Shared⽂件夹下的 _Layout.cshtml 母版页@RenderBody当创建基于_Layout.cshtml布局页⾯的视图时,视图的内容会和布局页⾯合并,⽽新创建视图的内容会通过_Layout.cshtml布局页⾯的@RenderBody()⽅法呈现在标签之间。
@RenderPage从名称可以猜出来这个⽅法是要呈现⼀个页⾯。
⽐如⽹页中固定的头部可以单独放在⼀个共享的视图⽂件中,然后在布局页⾯中通过这个⽅法调⽤,⽤法如下:@RenderPage(“~/Views/Shared/_Header.cshtml”)带参数@RenderPage(“~/Views/Shared/_Header.cshtml”,new{parm="my",parm2="you")调⽤页⾯获取参数://获取 RenderPage() 传递过来的参数@PageData["param"]@RenderSection布局页⾯还有节(Section)的概念,也就是说,如果某个视图模板中定义了⼀个节,那么可以把它单独呈现出来为了防⽌因缺少节⽽出现异常,可以给RenderSection()提供第2个参数:@RenderSection("head", false)或@if (IsSectionDefined("head")){@RenderSection("head", false)}else{<p>SubMenu Section is not defined!</p>}代码如下:<!DOCTYPE html><html><head><title>@ViewBag.Title</title><link href="@Url.Content(" rel="external nofollow" ~/Content/Site.css")" rel="stylesheet" type="text/css" /><script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>@RenderSection("head", required: true)@*View页⾯⾃定义特定js/css使⽤*@</head><body>@RenderPage("~/Views/Shared/_Header.cshtml")@RenderBody()</body></html>⼆、创建视图,使⽤母版页代码如下:@{ViewBag.Title = "Index";Layout = "~/Views/Shared/_Layout.cshtml";}<h2>Index</h2>@section Head{<script type="text/javascript">$(function () {alert("hello jquery");});</script>}<p>执⾏C#普通语法</p><br />@DateTime.Now.Date.ToShortDateString()<p>执⾏C#语句段</p>@{List<string> list = new List<string> { "Mvc3", "Razor" };list.Add(".Net4");}<ul>@foreach(string s in list){if (string.IsNullOrEmpty(s)){<li>空</li>}else{<li>@s</li>}}</ul>三、⽣成页⾯的源代码<!DOCTYPE html><html><head><title>Index</title><link href="/Content/Site.css" rel="external nofollow" rel="stylesheet" type="text/css" /><script src="/Scripts/jquery-1.4.4.min.js" type="text/javascript"></script><script type="text/javascript">$(function () {alert("hello jquery");});</script></head><body><h2>Index</h2><p>执⾏C#普通语法</p><br />2013/3/11<p>执⾏C#语句段</p><ul><li>Mvc3</li><li>Razor</li><li>.Net4</li></ul></body></html>四、@Html.PartialPartial 每次都会创建⾃⼰的 TextWriter 实例并且把内容缓存在内存中. 最后把所有 writer输出的内容发送到⼀个 MvcString对象中更多时候我们会使⽤ @{ Html.RenderPartial("Details"); } ⽽不是@Html.PartialHtml.RenderPartial()与@Html.Partial的区别Html.RenderPartial 直接输出⾄当前 HttpContext(因为是直接输出,所以性能好)。
主题和母版页(层叠样式表、主题)整合网站的第一步是采用一组一致的可视化样式。
CSS 为格式化Web 页面提供了跨平台的解决方案,它可以和HTML 或则XHTML 一起工作并几乎被所有的现代浏览器支持。
使用CSS 时,可以利用样式表定义一组预定义格式,然后通过CssClass 属性把这些样式表链接到适当的控件。
样式表由规则组成,每个规则定义了Web 页面中的一个元素应该如何被格式化。
每个规则的名字包含两部分:1.点号前面表明规则要作用的HTML 元素,点号前面什么都没有表示这个规则可作用于所有的HTML 元素。
2.点号后面的部分是一个唯一的名称,叫做CSS 类名,类名区分大小写。
.heading1{font-weight:bold;font-size:large;color:Lime;font-family:Verdana, Arial, Sans-Serif;}还可以创建自动应用到HTML 标签的规则,只要把标签名作为规则名即可:h2{color: Red;}这种自动的样式表看起来很有用,但它在 里却不是那么方便。
通常你直接处理的是控件而不是独立的HTML 标签。
有时候你总是不能确定将会用什么标签呈现某个控件,因此,最好通过类名显示指定规则。
如果你不喜欢手工书写CSS 规则,VS 允许使用设计器来构建。
只要添加一个规则的声明,在花括号中点击鼠标右键,选择创建样式即可。
一个典型的样式表会定义大量的规则,样式表常用于正式定义网站用户界面主要的格式,参考下面的样式表:body{font-family: Verdana, Arial, Sans-Serif;font-size: small;}.heading1{font-weight: bold;font-size: large;color: Lime;}.heading2{font-weight: bold;font-size: medium;font-style: italic;color: #C0BA72;}.blockText{padding: 10px;background-color: #FFFFD9;border-style: solid;border-width: thin;}VS 中选择视图,其他窗口,文档大纲,可以清楚的罗列当前样式表中所有的规则,可以迅速定位到某一规则:要在Web 页面里使用某个规则,首先页面要链接到适当的样式表,可在<head> 节中添加如下代码(可在VS中拖动样式表进入head):<link href="MyStyleSheet.css"rel="stylesheet"type="text/css"/><div><!-- 对于普通控件应用样式,可设置 CssClass 属性.--><asp:Label ID="Label1"runat="server"Text="This Label uses the heading1 style."CssClass="heading1"></asp:Label><!-- 对于一段普通的 HTML,要使用 class 特性 --><div id="paragraph"runat="server"class="blockText"><p>This paragraph uses the blockText style.</p></div></div>也可通过“应用样式”窗口来指定具体的规则应用(视图->应用样式),这个设计可以实现一个预览的效果,不过注意以下几点:∙如果选中的是Web 控件,它添加或修改CssClass 属性。
中利用母版页实现网站的快速结构化网站建设中,利用母版页实现网站的快速结构化布置,并在对网站网页的通用功能进行集中处理基础上,有效节能网页开发与网站建设的维护工作量,是当前网站建设中研究和关注的重点内容。
本文通过有关概念和理论简述,对中利用母版页实现网站快速结构化的方法原理进行研究,以供参考。
标签:;母版页;网站;快速;结构化;探讨网站建设中,网页设计的主要内容包含网站logo、标题以及导航菜单或功能按钮、网页的页面主体与页脚部分等,需要设计人员结合网站建设的要求,根据网页设计的要求,对其整体风格与布局进行准确把握,同时在对网页之间的公共部分进行单独处理基础上,有效满足网站建设以及网页设计的各种需求,促进网站建设与网页设计的质量效果提升。
根据上述对网站建设以及网站网页设计有关问题的论述,可以看出网站建设中,为满足网页设计的具体要求,需要网页各部分以及网页相互之间在一定的组织形式遵循基础上,形成网站建设的结构化体系,从而达到相应的网站建设与应用目的。
其中,在网站的结构化实现中,为确保网站结构的合理性与有效性,传统建设中是采用框架集技术实现的,即通过将一个页面空间划分成多个区域,然后在各区域进行独立网页显示。
需要注意的是,传统的网站建设中所采用的框架集技术在实际应用中存在着较为突出的问题,对网站建设的结构化设计十分不利,因此,本文将对中利用母版页实现网站的快速结构化的方法和原理进行研究,以供参考。
1 有关理论和概念简述1.1母版页及其概念理论分析中母版页作为一项新增技术,其中,网站建设中,母版页能够对网站“模板”进行定义,为其网页设计提供一致的风格与布局支持,从而在网站建设的网页设计中,通过一次修改就能够在具体实践中进行应用。
值得注意的是,与传统网站建设中网页设计所应用的框架集技术不同,母版页不仅对框架集技术的特征优势有很好的继承和实现,而且能够将一个页面空间划分成內容相对不变或者是内容可变的一个与多个区域,其中,内容不变的区域能够对网页的公共部分进行展示,而内容可变的区域则能够对具体内容进行呈现,并且是是通过另一个“内容页”页面文件进行独立存放的。
母版页的使⽤⼀、母版页简介使⽤母版页可以为应⽤程序中的页创建⼀致的布局。
单个母版页可以为应⽤程序中的所有页(或⼀组页)定义所需的外观和标准⾏为。
母版之所以称为母版,就是将⼤部分⽹页上固定内容,⽐如导航栏,版权声明栏放到⼀个母版⾥,然后编写⽹页时只需要调⽤母版就⾏了,内容页就不需要再写那些内容了。
不需要将相同的部分再写⼀遍。
母版中可以标记多个asp:ContentPlaceHolder。
母版页仅仅是⼀个页⾯模板,单独的母版页是不能被⽤户所访问的。
单独的内容页也不能够使⽤。
母版页和内容页有着严格对应关系。
母版页中包含多少个ContentPlaceHolder控件,那么内容页中也必须设置与其相对应的Content控件。
当客户端浏览器向服务器发出请求,要求浏览某个内容页⾯时,引擎将同时执⾏内容页和母版页的代码,并将最终结果发送给客户端浏览器。
在中母版页有两种作⽤,⼀是提⾼代码的复⽤(把相同的代码抽出来),⼆是使整个⽹站保持⼀致的风格和样式。
母版页⽆法直接启动运⾏,需要套⽤的⼦页⾯启动把它带出来母版页的嵌套,⼀般⽤2层⾜够,最多3层<asp:ContentPlaceHolder ID="id" runat="server"> - 母版页中的位置预留<asp:Content ID="Content2" ContentPlaceHolderID="id" runat="Server"> - 填坑⼆、母版页的建⽴和使⽤1.母版页的建⽴添加新项-母版页在新建的母版页中⾃动⽣成了两个ContentPlaceHolder控件,其中⼀个在head区, ID是“head”;另⼀个在body区,默认ID是“ContentPlaceHolder1”,可以根据需要⾃⼰命名。
在内容页中,两个控件会变成与其相对应的Content控件,⽤户需在content内进⾏开发。
母版页如何使⽤
计算机专业的很多同学临近毕业了,才着急怎么做⼀个毕业设计来进⾏答辩,很短的时间是不可能完成的,今天就先跟着⼩编的步伐,学习母版页的使⽤,快速掌握这个实⽤技巧,相信⼀定在⼤家的毕业设计过程中发挥巨⼤的作⽤。
⼯具/原料
Visual Studio 2008
⽅法/步骤
打开Visual Studio 2008,点击【⽂件】【打开⽹站】找到⽹站根⽬录⽂件夹,点击【打开】
在⽹站根⽬录上单击右键,选择【添加新项】
在弹出的【添加新项】选择【母版页】默认使⽤名称,点击【添加】
打开母版页的拆分界⾯,我们可以看见页⾯视图⾥⾯有⼀个【ContentPlaceHolder】元素
⽹页元素【ContentPlaceHolder】⾥⾯放置的是⼦页⾯的东西,我们每个页⾯不同的地⽅就使⽤这个,所以先复制⽹页元素到母版页
母版页代码
【 <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server"> ⼦页⾯内容
</asp:ContentPlaceHolder>】
⽤于显⽰不同页⾯差异部分
注意,母版页必须存放于⽹站根⽬录,以便随时调⽤
以上就是跟⼤家分享的母版页如何使⽤的图解教程,⼤家也可以结合之前这篇⽂章进⾏学习,可能会有意想不到的收货。
访问母版页的三种常用方法论文导读:新建一个网站。
创建母版页和内容页。
访问母版页的三种常用方法。
关键词:,母版页1. 创建母版页和内容页母版页是一个以.master为扩展名的文件,由特殊的@Master指令识别。
新建一个网站,添加一个母版页,命名为MasterPage,在母版页中添加一个服务器端Button控件,命名为button1。
论文大全,。
内容页是与普通网页类似,以.aspx为扩展名,但是在创建是要为它指定母版页,它主要包含页面中的非公共内容。
新建一个Web窗体,将MasterPage作为它的母版页,命名为ContentPage。
2. 访问母版页的常用方法访问母版页通常包括引用母版页的属性、方法、控件和响应控件事件。
论文大全,。
2.1引用公共属性和方法引用母版页中的属性和方法需要在内容页中使用@MasterType指令-在ContentPage.aspx文件中加入语句,该指令的作用是使内容页的Master属性被强类型化,即通过@MasterType指令创建与内容页相关的母版页的强类型引用。
论文大全,。
在内容页中只能引用母版页中的公共属性和方法。
论文大全,。
在母版页的代码文件中加入下面的代码:Private _str As String = '公共属性'Public Property property1() As StringGetReturn _strEnd GetSet(ByVal valueAs String)_str = valueEnd SetEnd PropertyPublic Sub sub1()MsgBox('公共方法')End Sub其中Property1是公共属性,用于访问私有变量_str;Sub1是公共方法。
在内容页的代码文件Content.aspx.vb中通过下面的代码访问母版页的属性和方法:Master.sub1()Dim str As String = Master.property12.2 引用母版页控件在内容页中还可能引用母版页的控件,而且没有必须为公共成员的限制。
中如何编写代码来引⽤母版页可以在内容页中编写代码来引⽤母版页中的属性、⽅法和控件,但这种引⽤有⼀定的限制。
对于属性和⽅法的规则是:如果它们在母版页上被声明为公共成员,则可以引⽤它们。
这包括公共属性和公共⽅法。
在引⽤母版页上的控件时,没有只能引⽤公共成员的这种限制。
引⽤母版页上的公共成员1.在内容页中添加 @ MasterType 指令。
在该指令中,将 VirtualPath 属性设置为母版页的位置,如下⾯的⽰例所⽰:<%@ MasterType virtualpath="~/Masters/Master1.master" %> 此指令使内容页的 Master 属性被强类型化。
2.编写代码,将母版页的公共成员⽤作 Master 属性的⼀个成员,如本例中,将母版页名为 CompanyName 的公共属性的值赋给内容页上的⼀个⽂本框引⽤母版页上的控件使⽤ FindControl ⽅法,将 Master 属性的返回值⽤作命名容器。
下⾯的代码⽰例演⽰如何使⽤ FindControl ⽅法获取对母版页上的两个控件的引⽤(⼀个 TextBox 控件和⼀个 Label 控件)。
因为 TextBox 控件处在 ContentPlaceHolder 控件的内部,必须⾸先获取对 ContentPlaceHolder 的引⽤,然后使⽤其 FindControl ⽅法来定位 TextBox 控件。
void Page_Load(){// Gets a reference to a TextBox control inside// a ContentPlaceHolderContentPlaceHolder mpContentPlaceHolder;TextBox mpTextBox;mpContentPlaceHolder =(ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");if(mpContentPlaceHolder != null){mpTextBox =(TextBox) mpContentPlaceHolder.FindControl("TextBox1");if(mpTextBox != null){mpTextBox.Text = "TextBox found!";}}// Gets a reference to a Label control that not in// a ContentPlaceHolderLabel mpLabel = (Label) Master.FindControl("masterPageLabel");if(mpLabel != null){Label1.Text = "Master page label = " + mpLabel.Text;}}。
(⼗三)母版页的使⽤我们浏览⽣活中的主流平台的时候会发现它们每个页⾯⼏乎都是⼀个风格的,⽐如我们熟悉的B站:⽹站的布局通常是统⼀的,上⾯是Logo、菜单条、下⾯是公司地址、版权声明等。
如果每个页⾯都重复做这些功能的话⼯作量太⼤,⼀旦修改那么每个页⾯都要修改,那么如何解决这⼀问题?中⼀般⽤母版(MasterPage)技术来解决这个问题。
母版页允许为web 应⽤程序中的所有页⾯(或页⾯组)创建⼀致的外观和⾏为。
母版页为其他页⾯提供模版,带有共享的布局和功能。
母版页为内容定义了可被内容页覆盖的占位符。
输出结果是母版页和内容页的组合。
内容页包含您想要显⽰的内容。
当⽤户请求内容页时, 会对页⾯进⾏合并以⽣成结合了母版页布局和内容页内容的输出。
创建母版页⽰例:⼀、我们⾸先来创建⼀个母版页,右键添加新项,选择Web Forms母版页,起名test.master:⼆、我们发现母版页是⽆法直接浏览的,必须嵌⼊相应的内容页后才可以浏览,右键—添加—新建项—选择包含母版页的Web窗体,在弹出的选择框中,选择我们刚创建好的test.master:三、在内容页中对预留位置的占位部分进⾏内容填充:四、运⾏后看效果:五、查看⽹页源代码:六、画图再次分析母版页和内容页的关系:⼩结:MasterPage是这样⼀种技术,把页⾯布局画好,在变化的内容部分“留空”,留空的部分由⼦页⾯填充内容,这样⼦页⾯只要填空就⾏,不⽤重复设计页⾯结构,⼀旦要修改页⾯结构修改母版页就可以,这样所有页⾯都会变化。
母版页“挖坑”,具体页⾯“填坑”。
母版页、具体页⾯中⼏乎可以使⽤所有的普通WebForm页⾯能够使⽤的技术。
母版页的特点:1. 有利于站点修改和维护,降低开发⼈员的⼯作强度2. 提供⾼效的内容整合能⼒3. 有利于实现页⾯布局4. 提供⼀种便于利⽤的对象模型母版页和⽤户控件有什么区别? 母版页是提取多个页⾯的外围公共部分,开发内容页时是嵌⼊于母版页中间的; ⽽⽤户控件是提取多个页⾯容中间任意⼀个位置的公共部分,开发时是把⽤户控件嵌⼊在开发的页⾯中的。
母版页使用详解收藏母版页是VS2005中新引入的一个概念,它很好地实现界面设计的模块化,并且实现实现了代码的重用。
它就像婚纱影楼中的婚纱模板,同一个婚纱模板可以给不同的新人用,只要把他们的照片贴在已有的婚纱模板就可以形成一张漂亮的婚纱照片,这样可以大大简化婚纱艺术照的设计复杂度。
这里的母版页就像婚纱模板,而内容页面就像两位新人的照片。
在VS2003中没有母版页,要实现这种设计重用的效果,我们只能用“用户控件”来实现,但用户控件没有一种可视化的组合外观,使用起来不太方便。
母版页(扩展名是.master)它的使用跟普通的页面一样,可以可视化的设计,也可以编写后置代码。
与普通页面不一样的是,它可以包含ContentPlaceHolder控件,ContentPlaceHolder控件就是可以显示内容页面的区域。
代码如下:<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>......<form id="form1" runat="server"><div><asp:contentplaceholder id="ContentPlaceHolder1" runat="server"></asp:contentplaceholder></div></form>......注意:1、这里的声明指示符是“<%@ Master...%>”2、其内部包含<asp:contentplaceholder......>控件内容页(扩展名是.aspx)在建立内容页面的时候,在“添加新项”对话框中要选中“选择母版页”复选框。
第10章主题、母版、用户控件很Web部件10.6 习题1.填空题(1)主题可以包括________、样式表文件和________。
外观文件图片文件p.246(2)母版页由特殊的________指令识别,该指令替换了用于普通.aspx网页的@Page指令。
@Masterp.252(3)母版页中可以包含一个或多个可替换内容占位符________。
ContentPlaceHolderp.252(4)如果用户要想在网站运行时动态地添加或删除WebPart控件,则需要添加________控件。
WebPartManagerp.270(5)内容页通过________和母版页建立联系。
ContentPlaceHolderIDp.2522.是非题(1)主题至少要有样式表文件。
(×)p.246(2)母版页只能包含一个ContentPlaceHolder控件。
(×)p.255(3)在同一主题中每个控件类型只允许有一个默认的控件外观。
(√)p.248(4)控件外观中必须指定SkinId值。
(×)p.248(5)同一主题中不允许一个控件类型有重复的SkinId。
(√)p.248(6)每个部件页可以包含多个WebPartManager控件。
(×)p.2623.选择题(1)主题不包括(D)。
A.skin 文件 B. css文件 C. 图片文件 D.config文件(2)一个主题必须包含(A)。
A.skin 文件 B. css文件 C. 图片文件 D.config文件(3)母版页文件的扩展名是(B)。
A..aspx B. .master C. .cs D..skin(4)在(D)模式下,允许重新启用被用户关闭的WebPart控件。
p.264A.BrowseDisplayModeB. DesignDisplayModeC. EditDisplayModeD.CatalogDisplayMode4.简答题(1)<% @Page Theme="ThemeName"%>和<% @Page StylesheetTheme="ThemeName"%>有何区别?p.249答:前者会覆盖本地属性,而后者不会。
浅谈中母版页快速实现网站结构化的利用的简述一个吸引眼球的Web页面不仅要有完美的独特设计,还得有丰富实用的功能体验,才能够达到用户满意。
但是如果我们仅仅把一两个页面做得优秀,其他页面错综复杂,也不会出现很好的效果,所以就要求我们制作出独特且统一的页面,这样我们的产品才会受到客户的信赖。
2母版页详细概述2.1母版页简述 4.0版本中母版页实际由母版页和内容页两部分组成。
我们通过使用 4.0单个母版页来定义Web中整个页面或者一组页面来统一设计好的风格布局,然后通过相应函数来调用母版页,这个调用的是创建过的内容包含要显示内容到各个内容页,设计者可以通过对内容页的再编辑来完成整个Web页面内容。
当用户访问主页面时,以母版页的整体布局与内容页的内容组合在一起输出。
母版页在某种程度上实际是定义了网页的模板,我们参照一些模板进行整合制作,来完成整个设计。
此功能集合了Dreamweaver框架集的优点,也就是它能把类似于一个页面区域的内容分为相对不变的公共区域和内容可变的一个或多个选用区域。
这里内容相对不变的区域我们可以设计网页的公共部分,比如标题、导航菜单和版权等。
这些公共部分可以使用传统制作网页的方式进行制作,像Logo、标题和版权声明等静态内容。
而导航菜单或功能按钮这些元素可以通过设计标签和文本框等控件元素来完成;当然使用 4.0软件可以通过代码分离的原则,在后台编写代码来动态生成相应内容,比如根据用户的权限动态生成等。
内容可变的区域用来显示具体的内容,它需要在单独的内容页中编辑。
相对独立的母版页和内容页虽然是两个不同的文件,但是在与实际操作运用当中它们两个是相互不能分开的。
在设计中母版页直接就统一了页面的布局和风格,能从实际中凸显出网页的总体功能,但是它不能详细地体现出页面实际显示的内容。
与之相应的内容页在母版页的基础上很好地体现出了页面编辑内容,但是它没有组成页面的HTML 基本标签元素,如html、head和body标签等,所以它不是一个完整的网页。
MVC使⽤母版页视图⼀、母版页介绍和使⽤母版页的扩展名为".cshtml",也叫做视图布局页,它相当于⽹页的模板。
在其他⽹页中,只要引⽤了母版页,母版页的页⾯内容就可以⾃动显⽰出来,设计者可以修改引⽤的母版页中预留的部分,其他部分保持不变,这样就可以使多个页⾯的风格保持⼀致,给⽹页设计带来了很⼤的⽅便。
1、创建母版页视图的要点(1)、在Views的⼦⽂件夹Shared⽂件夹⾥⾯添加。
(2)、以“_”前缀作为开头。
(3)、以"Layout.cshtml"作为结束。
2、MVC母版页⾥的三个功能点:(1)、RenderBody-⼦页⾯内容占位符。
(2)、RenderPage-引⽤呈现⼀个页⾯。
(3)、RenderSection-内容占位符。
如果新建⼀个MVC程序,⾥⾯有没有使⽤母版页视图呢?查看Index视图:从上⾯的截图中可以看出,Index⾥⾯只有两个DIV,但是⼀个基本的⽹页代码需要有HTML、head、body等元素标签组成,但是这⾥⾯并没有。
同时,浏览index视图:这时查看⽹页源代码:从上⾯的截图中可以看到有HTML、head、body等HTML元素,到这⾥可以看出,MVC中已经使⽤了母版页。
MVC中默认使⽤Shared⽂件夹⾥⾯的_ViewStart.cshtml视图。
⼆、RenderBodyRenderBody的作⽤是⼦页⾯内容占位符。
即母版页中使⽤了RenderBody的地⽅会使⽤⼦页⾯的内容来代替。
以_Layout视图为例:在_Layout母版页中使⽤了RenderBody,所以运⾏的时候这部分内容将会被Index⾥⾯的内容代替。
下⾯我们⾃⼰重新定义⼀个母版页,同时定义⼀个⼦页⾯来使⽤这个母版页来查看RenderBody的作⽤。
1、添加母版页在Shared⽂件夹上⾯右键添加,选择MVC5布局页2、命名为_TestLayout⽣成的模板页代码如下:<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width" /><title>@ViewBag.Title</title></head><body><div>@RenderBody()</div></body></html>3、修改母版页,修改后的母版页代码如下:<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width" /><title>@ViewBag.Title</title></head><body><div>我是母版页,在⼦页⾯中不允许更改<!--内容页占位符-->@RenderBody()</div></body></html>4、创建⼦页⾯使⽤母版页在Home控制器⾥⾯添加⼀个ActionName为Test的Action⽅法,并添加视图:⽣成的Test视图如下图所⽰:注意:如果Layout=null,则表⽰不使⽤母版页视图。