ASP.NET 母版页概述
使用 ASP.NET 母版页可以为应用程序中的页创建一致的布局。单个母版页可以为应用程序中的所有页(或一组页)定义所需的外观和标准行为。然后可以创建包含要显示的内容的各个内容页。当用户请求内容页时,这些内容页与母版页合并以将母版页的布局与内容页的内容组合在一起输出。
母版页为具有扩展名 .master(如 MySite.master)的 ASP.NET 文件,它具有可以包括静态文本、HTML 元素和服务器控件的预定义布局。母版页由特殊的 @ Master 指令识别,该指令替换了用于普通 .aspx 页的 @ Page 指令。该指令类看起来类似下面这样。
<%@ Master Language="C#" %>
除会在所有页上显示的静态文本和控件外,母版页还包括一个或多个 ContentPlaceHolder 控件。这些占位符控件定义可替换内容出现的区域。接着在内容页中定义可替换内容。
内容页
通过创建各个内容页来定义母版页的占位符控件的内容,这些内容页为绑定到特定母版页的 ASP.NET 页(.aspx 文件以及可选的代码隐藏文件)。通过包含指向要使用的母版页的 MasterPageFile 属性,在内容页的 @ Page 指令中建立绑定。例如,一个内容页可能包含下面的 @ Page 指令,该指令将该内容页绑定到 Master1.master 页。在内容页中,通过添加 Content 控件并将这些控件映射到母版页上的 ContentPlaceHolder 控件来创建内容。
<% @ Page Language="C#" MasterPageFile="~/Master.master" Title="Content Page 1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
Main content.
</asp:Content>
母版页中创建为 ContentPlaceHolder 控件的区域在新的内容页中显示为 Content 控件。
显示剩下的母版页内容,以便您查看布局,但这些内容显示为浅灰色,因为您在编辑内容页时不能更改这些内容。
母版页具有下面的优点:
1.使用母版页可以集中处理页的通用功能,以便可以只在一个位置上进行更新。
2.使用母版页可以方便地创建一组控件和代码,并将结果应用于一组页。例如,可以在母版页上使用控件来创建一个应用于所有页的菜单。
3.通过允许控制占位符控件的呈现方式,母版页使您可以在细节上控制最终页的布局。
4.母版页提供一个对象模型,使用该对象模型可以从各个内容页自定义母版页。
母版页的运行时行为
在运行时,母版页是按照下面的步骤处理的:
1.用户通过键入内容页的 URL 来请求某页。
2.获取该页后,读取 @ Page 指令。如果该指令引用一个母版页,则也读取该母版页。如果这是第一次请求这两个页,则两个页都要进行编译。
3.包含更新的内容的母版页合并到内容页的控件树中。
4.各个 Content 控件的内容合并到母版页中相应的 ContentPlaceHolder 控件中。
5.浏览器中呈现得到的合并页。
如何:引用 ASP.NET 母版页的内容
可以在内容页中编写代码来引用母版页中的属性、方法和控件,但这种引用有一定的限制。对于属性和方法的规则是:如果它们在母版页上被声明为公共成员,则可以引用它们。这包括公共属性和公共方法。在引用母版页上的控件时,没有只能引用公共成员的这种限制。
引用母版页上的公共成员
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 ContentPlaceHolder
ContentPlaceHolder 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 ContentPlaceHolder
Label mpLabel = (Label) Master.FindControl("masterPageLabel");
if(mpLabel != null)
{
Label1.Text = "Master page label = " + mpLabel.Text;
}
}
分享到:
相关推荐
引用asp.net母版页后,母版页和内容页的页面事件执行顺序引用asp.net母版页后,母版页和内容页的页面事件执行顺序
ASP.net制作母版页的使用,教会如何使用母版页.
母板页(MasterPage)中设置主题(附程序详解)
asp.net母版页多种样式(适合新手学习)【ASP.NET后台管理模板页.rar】【ASPnet皮肤主题和模板页.rar】【网上的母版页网页.rar】
幻灯片式 演练:创建和使用 ASP.NET 母版页的一步一步过程
【ASP.NET编程知识】ASP.NET母版页基础知识介绍.docx
【ASP.NET编程知识】浅谈Asp.Net母版页和内容页运行机制.docx
【ASP.NET编程知识】详解Asp.Net母版页元素ID不一致的体现.docx
ASP.NET 的一个后台管理的母版页,适用于各种网站, 开发环境VS08。需要的朋友可以下载
由于总体排版和设计的需要,我们往往创建母版页来实现整个网站的统一性,这篇文章主要介绍了详解Asp.Net母版页元素ID不一致的体现,感兴趣的小伙伴们可以参考一下
不解释 母版页 site master 的具体使用 很详细 一定能够看懂 加实例
介绍ASP.NET主题、母版页和站点导航的基本概念和应用
ASP.net实验报告加详细步骤,实验五,ASP.NET主题、母版页和站点导航,超详细的步骤,有图片有文字
ASP.NET 2.0创建母版页引来的麻烦-js无用
asp.net2.0母版页技术源文件 asp.net2.0母版页技术源文件 asp.net2.0母版页技术源文件
.Net母版页简明教程
主要介绍了浅谈Asp.Net母版页和内容页运行机制,详细的介绍了母版页和内容页的运行过程步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Asp.Net母版页的相关知识 母版页的使用与普通页面类似,可以在其中放置文件或者图形、任何的HTML控件和Web控件,后置代码等。母版页的扩展名以.master结尾,不能被浏览器直接查看。母版页必须在被其他页面使用后才能...
主题,母版,用户控件和web部件的例子。
继上篇文章,本文与大家分享asp.net母版页如何使用的全过程,并附有步骤截图,感兴趣的小伙伴们可以参考一下