子页调用母版页属性方法及控件


子页调用母版属性方法及控件

<asp:content id="content1" contentPlaceHolder="body" runat="server">

放置内容

</asp:content>

<asp:contentPlaceHolder id="body" runat="server">

以上是一个放置内容的容器

(1)调用母版中的方法及属性:在子页声明被调用页的信息,然后直接用master.XXXX()调用。

(2)调用母版中的控件:在子页中通过FindControl搜索母版页的id,调用之。 

母版页.master

<form id="form1" runat="server">

    <asp:Label ID="masterLabel" runat="server" Text="hello,this is a master!"></asp:Label><br />

    <div>

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

        </asp:contentplaceholder>

    </div>

</form>

母版页.aspx.cs(注意为public

    public void SayHello()

    {

        Response.Write("hello,everyone!I am a fresh chicken.");

    }

首先呢,是调用母版方法(调用属性一样) 

子页中的.aspx首部加入如下代码:

<%@ MasterType VirtualPath="~/母版页.master" %>

 子页则直接通过母版的方法名调用:

protected void Page_Load(object sender, EventArgs e)

{

    Master.SayHello();

}

其次,调用母版中的控件(FindControl):

子页采用FindControl的方法(此处是通过按钮出发事件而将调用来的母版属性显示在Label中)

 protected void btnGetMaster_Click(object sender, EventArgs e)

{

    Label lbMaster = Master.FindControl("masterLabel") as Label;

    if (lbMaster != null)

    {

        Label2.Text = lbMaster.Text.ToString();

    }

}

 其实,母版可以存在多个子版块的形式,FindControl也将变换为,事实上上面的程序也是这种的简写

Label lbMaster = Master.FindControl("ContentPlaceHolder1") .FindControl("Label1") as Label;

母版页和内容页的运行过程可以概括为以下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)提供一种便于利用的对象模型


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM