母版页怎么用呀

母版页怎么用呀,第1张

课程目标

q母版页

q母版页所在位置

q嵌套母版页

q内容

体验项目——<创建站点母版页 >

创建了一个母版页,站点的左侧为分类栏,顶部为菜单栏,右下侧为主要工作区域。

什么是母版页

q ASP.NET 2.0为网站开发人员提供了一种在一个文件中定义多个网站页面布局的功能。这个以.master为扩展名的文件,称之为母版页。

q 单个母版页可以定义所有页面的相同外观和通用行为,因而开发人员无须在每个页面中编写重复的代码,并且在需要修改页面布局时只需修改母版页即可。

q 利用母版页,开发人员可以创建单个网页模板并在应用程序中将该模板用作多个网页的基础,这样就无需从头创建所有新网页。

q 一个网站可以设置多种类型的母版页,以满足不同显示风格的需要。

创建母版页的方法

下面通过示例来讲述创建母版页的方法。

首先创建一个新网站,然后右击应用程序名,在d出的菜单中选择【添加新项】,在d出的对话框中选择【母版页】,并使用“MasterPage1.master”默认名(可改名,但后缀不能改)。此时在界面中将出现一个ContentPlaceHolder方形窗口,这个方形窗口是配置网页的地方。可以先对网页进行布局,然后再将这个窗口移动到合适的地方。下面举例说明具体步骤。

(1) 选择【布局】菜单中的【插入表】命令以便进行布局。在【插入表】对话框中选择【模板】,然后在下拉列表中选择布局样式。在本例中选择毁返的是【页眉和边】样式,如图所示。

(2) 用鼠标单击右下角的空间,并且将它的VAlign属性设置为Top,再将ContentPlaceHolder拖入到右下角的窗口中。

(3) 用鼠标单击左下角的空间,并且将它的VAlign属性设置为Top,再将TreeView控件从【工具箱】(ToolBox)拖入。

(4) 用类似方法将用户控件(User Control)拖入上面的空间中。

创建母版页的方法

16.3.3 在母版页中放入新网页的方法

可以直接在母版页中生成新网页,也可以在建立新网页过程中选择母版页。

1.直接从母版页中生成新网页

直接从母版页中生成新网页的步骤是:

(1) 打开母版页;

(2) 右击ContentPlaceholder控件,在d出的菜单中选择【添加内容页】命令,以确定内含的新网页;

(3) 右击新网页,在d出的菜单中选择【编辑主表】命令,然后在网页中增添新控件。

此时新网页将被嵌入到母模板中,与母版页形成一个网页文件,网页的名字即新宽举网纤巧饥页的名字。

2.在创建新网页中选择母版页

在创建新网页中选择母版页的方法是:在网站中创建一新网页。此时,在网页名的右方提供了两项选择,可以从中选择一项或两项,或者两项都不选择。两种选择项的含义如下。

将代码放在单独的文件中:代表采用代码分离方式。

选择母版页:代表将新网页嵌入到母版页中。

如果两项都不选择时,系统将创建一个单文件模式的独立网页,此网页将独立于母版页。

如果选择了第2项,将d出一文件列表,提供一个或多个“母版页”文件以供选择。当选择其中之一后,新网页就会嵌入到指定的母版页中。

母版页与新网页将构成一个整体成为一个新的网页,新网页仍使用新产生的网页名。在母版页中将包括多个网页的共性部分,被嵌入的网页中包含的是网页的个性部分。这种关系可以用一个简单的表达式来表示:

default.aspx = Master Page + default.aspx

网页与母版页的关系下图所示。

在母版页中放入新网页的方法

将已建成的网页放入母版页中

为了将已经建成的网页嵌入母版页中,需要在已经建成的网页中用手工方法增加或改写一些代码。

(1) 打开已建成的网页,进入它的代码界面,在页面指示语句中增加与母版页的联系。为此需增加以下属性,其中"~/MasterPage.master"代表母版页名。

<%@Page Language="C#" MasterPageFile=" ~/MasterPage.master"

AutoEventWireup="…">

(2) 由于在母版页中已经包含有HTML、Head、Body、Form等标记,因此在网页中要删除所有这些标记,以避免重复。同样,类似于<H1></H1>的标记也要删除(div标记不要删除)。

(3) 在剩下内容的前后两端加上Content标记,并增加Content的ID属性,Runat属性以及ContentPlaceHolderID属性,后者的值(这里是ContentPlaceHolder1)应该与母版页中的网页容器相同。修改后的语句结构如下:

<asp:Content ID="bodyContent" ContentPlaceHolderID="ContentPlaceHolder1" Runat=Server>

<div>

</div>

</asp:Content>

就是说修改后的代码中除页面指示语句以外,所有语句都应放置在<asp:Content…>与</asp:Content>之间。

母版页和内容页

q 母版页和普通的.aspx页面基本类似,母版页可以包含标记、控件或代码,也可以包含这些元素的任意组合,它提供预先定义的布局,这些布局可以是静态HTML元素或者服务器控件。

q 但不同的地方是:

l 母版页在页面定义部分把@Page替换成了@Master。

l 母版页都是以.master扩展名结尾,以防止浏览器直接打开它。

l 母版页需要结合内容页实现它的功能。在某一页的Page指令中定义MasterPageFile属性,便可以从母版页派生该页,如下代码所示

<%@ Page MasterPageFile="Site.master" %>

ContentPlaceHolder控件

q 母版页可以包含一种特殊类型的控件,称为ContentPlaceHolder控件。ContentPlaceHolder 定义了一个母版页呈现区域,可由与母版页关联的页的内容来替换。ContentPlaceHolder还可以包含默认内容,以免派生页不需要重写此内容。

q ContentPlaceHolder控件的语法如下:

<%-- ContentPlaceHolder control --%>

<asp:contentplaceholder id="FlowerText" runat="server"/>

<%-- ContentPlaceHolder with default content --%>

<asp:contentplaceholder id="FlowerText" runat="server">

<h3>Welcome to my florist website!</h3>

</asp:contentplaceholder>

母版页中的URL问题

q 母版页中有多处使用相对路径语法引用图像、样式表或页引用之类的URL资源,如果母版页和内容页在同一目录中,代码将正常运行;但是,如果内容页实际上在另一个位置,这个相对路径就是错误的。要解决这个问题,可以采取以下方法之一:

l 在母版页中使用绝对URL路径,例如<img src="/myapplication/images/banner.gif" />。

l 在服务器控件中使用相对URL或与应用程序相关的URL来代替静态标记,例如<asp:Image ImageUrl="~/images/banner.gif" runat="server" />。

以编程方式访问母版页

q 内容页也可以通过编程方式访问其母版页。内容页使用<%@ MasterType %>指令来创建对母版页的强类型引用,并指定到母版页的虚拟路径:

<%@ MasterType VirtualPath="Site.master" %>

然后,内容页可以使用Page类的Master属性来引用母版页了,代码如下所示:

Master.FooterText = "This is a custom footer"

AdRotator ad = (AdRotator)Master.FindControl("MyAdRotator")

Master.FooterText = "This is a custom footer"

Dim ad As AdRotator = Master.FindControl("MyAdRotator")

q 可以使用母版页以编程方式执行许多公共任务,包括:

l 访问在母版页上定义的成员(包括公共属性/方法或控件)。

l 动态地将母版页附加到内容页。

访问母版页上的成员

q 在运行时,母版页与内容页合并,因此内容页的代码可以访问母版页上的控件。如果母版页的 ContentPlaceHolder控件中包含一些控件,则这些控件被内容页的Content控件重写后将不可访问,这些控件是受保护的,因此不能作为母版页成员直接访问。但是,可以使用FindControl方法定位母版页上的特定控件。如果要访问的控件位于母版页的ContentPlaceHolder控件内部,必须首先获取对 ContentPlaceHolder 控件的引用,然后调用其 FindControl 方法获取对该控件的引用。

动态地附加母版页

q 除了以声明方式指定母版页(在 @ Page 指令或配置文件中)外,还可以动态地将母版页附加到内容页。因为母版页和内容页会在页处理的初始化阶段合并,所以必须在此前分配母版页。通常,在PreInit事件阶段动态地分配母版页,如下面的示例所示:

void Page_PreInit(Object sender, EventArgs e)

{

this.MasterPageFile = "~/NewMaster.master"

}

实践项目——<创建站点母版页 >

程序的实现要求如下:

(1)新建网站项目。

(2)添加母版页。

(3)添加对应的图片和布局。

(4)设置CSS样式,控制页面样式。

本章总结

q母版页

q母版页所在位置

q嵌套母版页

q内容页

先建一个模板页,在模板页上面添加导航条,左侧添加副导航条,副导航条用imagebutton控件,保存下。

1.开发人员能够使用母版页定义某一组页面的呈现样式,甚至能够定义整个网站的页面的呈现样式,Visual Studio 2008 能够轻松的创建母版页文件,对网站的全部或部分页面进行样式控制。单击(添加项),选租键吵项,选择(母版页)项目,即可向项目中添加一个母版页。                                                    2.母版页的结构基本同 Web 窗体,但是母版页通常情况下是用来进行页面布局。当 Web 应用程序中的很多页面的布局都相弊侍同,甚至中间需要使用的用户控件、自定义控件、样式表都相同时,则可以在一个母版页中定义和编码,对一组页面进行样式控制。编写母版页的方法非常简单,只需要像编写 HTML页面一样就可以编写母版页。在编写网站页面时,首先需要确定通用的结构,并且确定需要使用控件或CSS页面。                                                                                                                                    亮猜3.母版页(扩展名是.master),它的使用跟普通的页面一样,可以可视化的设计,也可以编写后置代码。与普通页面不一样的是,它可以包含ContentPlaceHolder控件,ContentPlaceHolder控件就是可以显示内容页面的区域。

内容页是与母版页相关联的 ASP.NET 网页。母版页建立一个布局并包含一个或多个用于可替换文本和控件的 ContentPlaceHolder 控件。内容页只包含在运行时与母版页的 ContentPlaceHolder 控件合并在一起的文本和控件。有关更多信息,禅亮请贺粗宽参见 ASP.NET 母版页概述。Visual Web Developer 提供了多种创建内容页的方式,包括在编辑母版页时所用到的快捷方式。此外,还可以从空白页开始并添加适当的指令来创建内容页。在创建内容页后,可以创建与母版页上的每个 ContentPlaceHolder 相对应的自定义内容。此外,还可以显式选择允许显示母版页的默认内容。在Visual Web Developer 中添加内容页在解决方案资源管理器中,右键单击网站的名称,再单击“添加新项”。在“Visual Studio 已安装的模板”列表中单击“Web 窗体”。选择“选择母版页”复选框,再单击“添加”。 “选择母版页”对话框出现。在“文件夹内容”框中单击要与所创建的页相关联的母版页,再单击“确定”。在编辑母版页时创凳羡建内容页在编辑器中打开母版页后,右键单击该页上的任意位置,再单击“添加内容页”。Visual Web Developer 随即会创建一个名为 Defaultx.aspx 的新内容页,其中 x 是序列号。注意若要向该内容页指定其他名称,请在解决方案资源管理器中右键单击该默认名称,然后单击“重命名”。以声明方式创建内容页创建一个新的 ASP.NET 网页。切换到“源”视图。移除该页中除 @ Page 指令之外的所有内容。将引用母版页的 MasterPageFile 属性添加到 @ Page 指令中,如下面的代码示例所示。 Visual Basic <%@ Page Language="VB" MasterPageFile="~/Master1.master" %>C# <%@ Page Language="C#" MasterPageFile="~/Master1.master" %>注意@


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11974956.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存