4.2母版页 4.2.1 母版页概述 用户在设计网站时经常会遇到多个网页部分内容相同的情况,例如:具有网关和内容都相同的标题栏、页脚栏、导航栏等,如果每个网页都设计一次,不仅重复劳动而且非常繁琐,此时,使用母版页可以很好地解决这个问题。 母版页是指可以在同一站点的多个页面间共享使用的特殊网页。用户可以使用母版页建立一个通用布局,或者使用母版页,在多个页面中,显示公共的内容。 母版页的使用与普通的aspx页面类似,可以在其中放置任何HTML控件、Web服务器控件或图形等,不同之处如下: (1) 母版页将普通页面的@Page指令,替换成了@Master指令。 (2) 母版页的扩展名为.master,因此,不能被浏览器直接查看。 (3) 母版页中包含若干个ContentPlaceHolder控件,是预留出来的显示内容页面的区域。 (4) 母版页必须在被内容页引用之后才能进行显示。 (5) 母版页仅仅是一个页面模板,不能直接运行。 引用母版页的Web窗体被称为内容页。 在内容页中,母版页中的ContentPlaceHolder控件预留的可编辑区,会自动替换为Content控件,在Content控件中,开发人员可以自由设计,而在母版页中定义的公共内容将自动显示在内容页,不可以被修改。 当用户运行一个引用母版页的内容页时,服务器按照如下步骤将页面发送给用户: (1) 用户通过输入内容页的URL来请求某页面。 (2) 服务器读取该页面中的@Page指令,如果该指令引用了一个母版页,则读取该母版页。如果是第一次请求这两个页,则两个页都要进行编译。 (3) 服务器将各Content控件的内容合并到母版页相应的ContentPlaceHolder控件中。 (4) 在浏览器中呈现合并后的完整页面。 4.2.2 创建母版页 (1)右击网站名称-添加-添加新项-搜索“母版页”-输入名称-添加
(2)添加完成之后,系统自动切换到母版页的源视图
(3) 从上图可知,母版页创建成功之后,系统在新建的母版页里,自动创建了两个ContentPlaceHolder控件,ID分别是head和ContentPlaceHolder1 (4) 开发人员可以在源视图或者设计视图中添加母版页的内容,但是,添加的内容不能出现在ContentPlaceHolder控件中,因为该区域是为内容页预留的区域。 4.2.3 创建内容页 1、创建内容页的方法 母版页不能单独在浏览器中预览显示效果,必须通过引用了该母版页的内容页进行查看。 在内容页中,母版页中的ContentPlaceHolder控件预留的可编辑区,会自动替换为Content控件,内容页的所有内容必须包含在Content控件内,创建内容页就是在母版页的可编辑区中填充内容。 创建内容页的方法有两种: (1) 方法一 右击网站名称-添加-添加新项-选择 Web窗体 并选中右下角的“选择母版页”复选框(但是我们正在使用的VS版本没有这个复选框)
(2) 方法二 在VS的解决方案资源管理器中,右击要引用的母版页的名称,在弹出的快捷菜单中选择“添加内容页”命令,就可以在网站中添加一个引用该母版页的空白内容页。
2、内容页与普通Web窗体页的区别 在内容页创建好之后,系统会自动切换到内容页的源视图。 内容页与普通Web窗体页有所不同,主要体现在一下几个方面: (1) 在@Page指令中,增加了Title=””和MasterPageFile="~/Site1.Master"两个指令。
(2) 在内容页中,不包括、 、、、 |