Content......>”就是要在其中显示的内容。
一、在母版页中编写后台代码,访问母版页中的控件:
与普通的aspx页面一样,双击按钮即可编写母版页中的代码
二、在内空页面中编写后台代码,访问内容页面中的控件:
与普通的aspx页面一样,双击按钮即可编写母版页中的代码
三、在内容页面中编写代码访问母版页中的控件:
在内容页面中有个Master对象,它是MasterPage类型,它代表当前内容页面的母版页。
通过这个对象的FindControl方法,我们可以找到母版面中的控件,这样就可以在内容页面中操作母版页中的控件了。
TextBoxtxt=(TextBox)((MasterPage)Master).FindControl("txtMaster");
txt.Text=this.txtContent1.Text;;
四、在内容页面中编写代码访问母版页中的属性和方法:
仍可能通过Master对象进行访问,只不过在这里要把Master对象转换成具体的母版页类型,然后再调用母版页中的属性和方不法。
这里要说明的是:
母版页中要被内容页面调用的属性和方法必须是Public修改的。
否则无法调到。
假设母版页中有下面的属性和方法:
publicstringTextValue
{
get
{
returnthis.txtMaster.Text;
}
set
{
this.txtMaster.Text=value;
}
}
publicvoidshow(stringstr)
{
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来找到方法和属性。
于是我们想到在母版面的声明指示符中加入下面的代码:
<%@ReferencePage="~/MasterPage/Show1.aspx"%>
在运行的时候回发现有错误,错误的内容是“无法实现循环引用”。
这是因为默认在子页面中引用了母版页,你也就不能再在母版页中引用子页面了。
我在网上也没找到更好的解决方法,但这使我们想起C#是的“反射”,它可以使我们动态获取页面对象,并且可以调用它的属性和方法。
代码如下:
Typet=this.ContentPlaceHolder1.Page.GetType();
PropertyInfopi=t.GetProperty("ContentValue");//获取ContentValue属性
pi.SetValue(this.ContentPlaceHolder1.Page,this.txtMaster.Text,null);//给属性赋值
MethodInfomi=t.GetMethod("SetValue");//获取SetValue()方法
object[]os=newobject[1];//建造输入参数
os[0]=txtMaster.Text;
mi.Invoke(this.ContentPlaceHolder1.Page,os);//调用SetValue方法
七、在有多个内容页面使用母版面的情况下,在母版页中根据不同的内容页面实现不同的操作
在母版页中可以加入多个不同的内容页面,但在设计期间,我们无法知道当前运行的是哪个内容页面。
所以只能通过分支判断当前运行的是哪个子页面,来执行不同的操作。
这里也用到了反射的知识。
代码如下:
strings=this.ContentPlaceHolder1.Page.GetType().ToString();//取出内容页面的类型名称
if(s=="ASP.default17_aspx")//根据不同的内容页面类型执行不同的操作
{
((TextBox)this.ContentPlaceHolder1.FindControl("TextBox2")).Text="MastPage";
}
elseif(s=="ASP.default18_aspx")
{
((TextBox)this.ContentPlaceHolder1.FindControl("TextBox2")).Text="HelloMastPage";
}
八、在母版面与内容页面中JS代码的操作
在母版页或内容页面中的控件运行之后会自动生成ID,如文本框的ID是txtContent1,在运行之后ID会自动变为ctl00_ContentPlaceHolder2_txtContent1,name属性会变为ctl00$ContentPlaceHolder2$txtContent1。
在JS代码中,我们用document.getElementById()方法,根据id取得控件对象的时候,应当使用ctl00_ContentPlaceHolder2_txtContent1这个ID名,否则会产生“未找到对象”的异常。
(车延禄)
母版页运行机制
母版页仅仅是一个页面模板,单独的母版页是不能被用户所访问的。
单独的内容页也不能够使用。
母版页和内容页有着严格对应关系。
母版页中包含多少个ContentPlaceHolder控件,那么内容页中也必须设置与其相对应的Content控件。
当客户端浏览器向服务器发出请求,要求浏览某个内容页面时,ASP.NET引擎将同时执行内容页和母版页的代码,并将最终结果发送给客户端浏览器。
母版页和内容页的运行过程可以概括为以下5个步骤。
(1)用户通过键入内容页的URL来请求某页。
(2)获取内容页后,读取@Page指令。
如果该指令引用一个母版页,则也读取该母版页。
如果是第一次请求这两个页,则两个页都要进行编译。
(3)母版页合并到内容页的控件树中。
(4)各个Content控件的内容合并到母版页中相应的ContentPlaceHolder控件中。
(5)呈现得到结果页。
母版页和内容页事件顺序
(1)母版页中控件Init事件;
(2)内容页中Content控件Init事件;
(3)母版页Init事件;
(4)内容页Init事件;
(5)内容页Load事件;
(6)母版页Load事件;
(7)内容页中Content控件Load事件;
(8)内容页PreRender事件;
(9)母版页PreRender事件;
(10)母版页控件PreRender事件。
(11)内容页中Content控件PreRender事件。
使用母版页的优点:
(1)有利于站点修改和维护,降低开发人员的工作强度
(2)有利于实现页面布局
(3)提供一种便于利用的对象模型
发表于@2007年12月29日 20:
38:
00|评论
(1)|编辑|举报|收藏
旧一篇:
使用CascadingDropDown控件连接数据库|新一篇:
GridView日期的绑定格式
本文来自CSDN博客,转载请标明出处:
ASP.NET母版页概述
开启低带宽视图
语言筛选器:
全部
VisualBasic
C#
C++
J#
JScript
XAML
F#
此页面仅适用于
MicrosoftVisualStudio2005/.NETFramework2.0
同时提供下列产品的其他版本:
∙MicrosoftVisualStudio2008/.NETFramework3.5
ASP.NET
ASP.NET母版页概述
使用ASP.NET母版页可以为应用程序中的页创建一致的布局。
单个母版页可以为应用程序中的所有页(或一组页)定义所需的外观和标准行为。
然后可以创建包含要显示的内容的各个内容页。
当用户请求内容页时,这些内容页与母版页合并以将母版页的布局与内容页的内容组合在一起输出。
母版页的工作原理
母版页实际由两部分组成,即母版页本身与一个或多个内容页。
注意
您也可以嵌套母版页。
有关详细信息,请参见嵌套的ASP.NET母版页。
母版页
母版页为具有扩展名.master(如MySite.master)的ASP.NET文件,它具有可以包括静态文本、HTML元素和服务器控件的预定义布局。
母版页由特殊的@Master指令识别,该指令替换了用于普通.aspx页的@Page指令。
该指令类看起来类似下面这样。
VisualBasic
复制代码
<%@MasterLanguage="VB"%>
C#
复制代码
<%@MasterLanguage="C#"%>
@ Master指令可以包含的指令与@Control指令可以包含的指令大多数是相同的。
例如,下面的母版页指令包括一个代码隐藏文件的名称并将一个类名称分配给母版页。
VisualBasic
复制代码
<%@MasterLanguage="VB"CodeFile="MasterPage.master.vb"Inherits="MasterPage"%>
C#
复制代码
<%@MasterLanguage="C#"CodeFile="MasterPage.master.cs"Inherits="MasterPage"%>
除@ Master指令外,母版页还包含页的所有顶级HTML元素,如html、head和form。
例如,在母版页上可以将一个HTML表用于布局、将一个img元素用于公司徽标、将静态文本用于版权声明并使用服务器控件创建站点的标准导航。
您可以在母版页中使用任何HTML元素和ASP.NET元素。
可替换内容占位符
除会在所有页上显示的静态文本和控件外,母版页还包括一个或多个ContentPlaceHolder控件。
这些占位符控件定义可替换内容出现的区域。
接着在内容页中定义可替换内容。
定义ContentPlaceHolder控件后,母版页可能看起来类似于下面这样。
VisualBasic
复制代码
<%@MasterLanguage="VB"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML
1.1//EN""http:
//www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Masterpagetitle