MasterPage(母版页):
1.MSDN中的概述:
使用 ASP.NET 母版页可以为应用程序中的页创建一致的布局。单个母版页可以为应用程序中的所有页(或一组页)定义所需的外观和标准行为。然后可以创建包含要显示的内容的各个内容页。当用户请求内容页时,这些内容页与母版页合并以将母版页的布局与内容页的内容组合在一起输出。
母版页实际由两部分组成,即母版页本身与一个或多个内容页。
母版页:
母版页为具有扩展名 .master(如 MySite.master)的 ASP.NET 文件,它具有可以包括静态文本、HTML 元素和服务器控件的预定义布局。母版页由特殊的
母版页的声明:
a. 一般页面指令:
c. 动态应用母版页:
可替换内容占位符:
除会在所有页上显示的静态文本和控件外,母版页还包括一个或多个
内容页:
通过创建各个内容页来定义母版页的占位符控件的内容,这些内容页为绑定到特定母版页的 ASP.NET 页(.aspx 文件以及可选的代码隐藏文件)。通过包含指向要使用的母版页的
Master1.master
母版页。内容页的声明:
Main
和 Footer
的内容占位符。在内容页中,可以创建两个 Content 控件,一个映射到 ContentPlaceHolder 控件 Main
,而另一个映射到 ContentPlaceHolder 控件 Footer。
代码如下:
以上代码仅仅是在两个不同的Content中显示出不同的两行文本以示区分而已。
创建 Content 控件后,向这些控件添加文本和控件。在内容页中,Content 控件外的任何内容(除服务器代码的脚本块外)都将导致错误。在 ASP.NET 页中所执行的所有任务都可以在内容页中执行。
可以创建多个母版页来为站点的不同部分定义不同的布局,并可以为每个母版页创建一组不同的内容页。
2. 母版页的优点:
母版页提供了开发人员已通过传统方式创建的功能,这些传统方式包括重复复制现有代码、文本和控件元素;使用框架集;对通用元素使用包含文件;使用 ASP.NET 用户控件等。母版页具有下面的优点:
-
使用母版页可以集中处理页的通用功能,以便可以只在一个位置上进行更新。
-
使用母版页可以方便地创建一组控件和代码,并将结果应用于一组页。例如,可以在母版页上使用控件来创建一个应用于所有页的菜单。
-
通过允许控制占位符控件的呈现方式,母版页使您可以在细节上控制最终页的布局。
-
母版页提供一个对象模型,使用该对象模型可以从各个内容页自定义母版页。
3. 母版页的运行时行为:
在运行时,母版页是按照下面的步骤处理的:
-
用户通过键入内容页的 URL 来请求某页。
-
获取该页后,读取 @ Page 指令。如果该指令引用一个母版页,则也读取该母版页。如果这是第一次请求这两个页,则两个页都要进行编译。
-
包含更新的内容的母版页合并到内容页的控件树中。
-
各个 Content 控件的内容合并到母版页中相应的 ContentPlaceHolder 控件中。
-
浏览器中呈现得到的合并页。
4. 如何:引用 ASP.NET 母版页中的内容:
动态操作定义在母版页当中的内容。
可以在内容页中编写代码来引用母版页中的属性、方法和控件,但这种引用有一定的限制。对于属性和方法的规则是:如果它们在母版页上被声明为公共成员,则可以引用它们。这包括公共属性和公共方法。在引用母版页上的控件时,没有只能引用公共成员的这种限制。
首先:获得母版页的引用。获得继承自System.Web.UI.MasterPage类的一个实例对象。如果页面没有应用母版页,则返回Null。
其次:
第一种方法:使用FindControl进行弱类型的操作。使用
例如:母版页中定义一个Label控件:
内容页中,因为 Label 控件处在
第二种方法:使用母版页当中的公开属性进行强类型的操作(推荐)。
例如:母版页中定义一个Label控件,同时,需要定义对它进行操作的属性:
内容页中:
5. 母版页的嵌套:
与任何母版页一样,子母版页也包含文件扩展名 .master。子母版页通常会包含一些内容控件,这些控件将映射到父母版页上的内容占位符。就这方面而言,子母版页的布局方式与所有内容页类似。但是,子母版页还有自已的内容占位符,可用于显示其子页提供的内容。
例如:父母版页(Parent.master):
继承子母版页的内容页:
<asp:Content id="Content1" ContentPlaceholderID="Content1" runat="server">
<asp:Label runat="server" id="Label1"
text="Child label1" font-bold="true" />
<br>
</asp:Content>
<asp:Content id="Content2" ContentPlaceholderID="Content2" runat=server>
<asp:Label runat="server" id="Label2"
text="Child label2" font-bold=true/>
</asp:Content>
至此,关于母版页的概述和应用就介绍完了,在项目中也得到了全面的发挥。祝大家编程愉快!