浅谈Asp.Net母版页的相关知识

母版页的使用与普通页面类似,可以在其中放置文件或者图形、任何的HTML控件和Web控件,后置代码等。母版页的扩展名以.master结尾,不能被浏览器直接查看。母版页必须在被其他页面使用后才能进行显示。

它的使用跟普通的页面一样,可以可视化的设计,也可以编写后置代码。与普通页面不一样的是,它可以包含ContentPlaceHolder控件,ContentPlaceHolder控件就是可以显示内容页面的区域。

母版页仅仅是一个页面模板,单独的母版页是不能被用户所访问的。单独的内容页也不能够使用。母版页和内容页有着严格对应关系。母版页中包含多少个ContentPlaceHolder控件,那么内容页中也必须设置与其相对应的Content控件。当客户端浏览器向服务器发出请求,要求浏览某个内容页面时,引擎将同时执行内容页和母版页的代码,并将最终结果发送给客户端浏览器。

母版页具有下面的优点:

使用母版页可以集中处理页的通用功能,以便可以只在一个位置上进行更新。

使用母版页可以方便地创建一组控件和代码,并将结果应用于一组页。例如,可以在母版页上使用控件来创建一个应用于所有页的菜单。

通过允许控制占位符控件的呈现方式,母版页使您可以在细节上控制最终页的布局。

母版页提供一个对象模型,使用该对象模型可以从各个内容页自定义母版页。

示例代码:

<%@ 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)

在建立内容页面的时候,在“添加新项”对话框中要选中“选择母版页”复选框。这样建立的页面就是内容页面,内容页面在显示的时候会把母版面的内容一起以水印淡化的形式显示出来,而在母版页中的ContentPlaceHolder控件区域会被内容页面中的Content控件替换,程序员可以在这里编写内容页面中的内容。

代码如下:

<%@ Page Language=”C#” MasterPageFile=”~/MasterPage/MP.master” AutoEventWireup=”true” CodeFile=”Show1.aspx.cs” Inherits=”MasterPage_Show1″ Title=”Untitled Page” %> <asp:Content ID=”Content1″ ContentPlaceHolderID=”ContentPlaceHolder1″ Runat=”Server”> </asp:Content>

注意:

1、这里的声明指示符中多了一项MasterPageFile=”~/MasterPage/MP.master”,这一项是在创建内容页面时根据“选择母版页”复选框的选中情况生成的。它指明了该页是内容页面,也指明了该内容页面的母版页是哪个页面。

2、“<asp:Content ……>”就是要在其中显示的内容。

一、在母版页中编写后台代码,访问母版页中的控件:

与普通的aspx页面一样,双击按钮即可编写母版页中的代码

二、在内空页面中编写后台代码,访问内容页面中的控件:

与普通的aspx页面一样,双击按钮即可编写母版页中的代码

三、在内容页面中编写代码访问母版页中的控件:

在内容页面中有个Master对象,它是MasterPage类型,它代表当前内容页面的母版页。通过这个对象的FindControl方法,我们可以找到母版面中的控件,这样就可以在内容页面中操作母版页中的控件了。

TextBox txt = (TextBox)((MasterPage)Master).FindControl(“txtMaster”); txt.Text = this.txtContent1.Text; ;

四、在内容页面中编写代码访问母版页中的属性和方法:

仍可能通过Master对象进行访问,只不过在这里要把Master对象转换成具体的母版页类型,然后再调用母版页中的属性和方不法。

这里要说明的是:母版页中要被内容页面调用的属性和方法必须是Public修改的。否则无法调到。

假设母版页中有下面的属性和方法:

public string TextValue    { get { return this.txtMaster.Text; } set { this.txtMaster.Text = value; } } public void show(string str)    { txtMaster.Text = str; }

在内容页面中可以通过下代的代码来实现对母版页中方法的调用:

((MasterPage_MP)Master).show(this.txtContent1.Text); ((MasterPage_MP)Master).TextValue = this.txtContent1.Text;

五、在母版页中访问内容页面的控件:

在母版页中可以通过在ContentPlaceHolder控件中调用FindControl方法来取得控件,然后对控件进行操作。

复制代码 代码如下:

((TextBox)this.ContentPlaceHolder1.FindControl(“txtContent1″)).Text = this.txtMaster.Text;

六、在母版页中访问内容页面中的方法和属性:

在母版页中调用子页面中的属性和方法有点难度,因为我们无法像上一步中那样通过FindControl来找到方法和属性。

于是我们想到在母版面的声明指示符中加入下面的代码:

<%@ Reference Page=”~/MasterPage/Show1.aspx” %>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdsfyj.html