.模板页扩展名为Master,内容页引用模板页的方法:

<%@ Page Language="C#" MasterPageFile="~/Default_Master.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AstarBlogUI.WebForm1" Title="无标题页" %>

2.动态改变内容页所引用的模板页

通常在Init事件下改变:
protected void Page_PreInit(object sender,EventArgs e)
{this.MasterPageFile="~/ABC.master";}

3.在内容页中使用模板页中的控件

Master:<asp:Label ID="LabDemo" runat="server" text="xlovey" />

内容页

                Label lb = (Label)Master.FindControl("LabDemo");//直接在Master中找LabDemo
                if (lb != null)

                {

                    Response.Write("<script>alert('" + lb.Text.ToString() + "')</script>");

                }

当控件在Master中的ContentPlaceHolder里的话则需要

                ContentPlaceHolder a = (ContentPlaceHolder)Master.FindControl("Content2");//先找到ContentPlaceHolderID

    if(a!= null)

    {

        TextBox Txt=(TextBox)a.FindControl("TxtDemo");

        if(Txt != null)

        {

            Response.write(Txt.text.ToString());

        }

    }

4.在内容页中使用模板页中的变量,属性,方法

首先在内容页加上<%@ MasterType VirtualPath="~/Default_Master.Master" %>

模板页中的变量必须为:Public string WebTitle="welocome to ..."; //并放在模板页类下定义并初始化.

就可以在内容页中:Master.WebTitle进行引用.

但如果此变量在网页加载的时候改变了,引用的值还为定义时初始化的值.因为加加载模板页到内容页的事件先后为:

(1)母版页-Init(2)内容页-Init(3)内容页-Load(4)母版页-Load(5)内容页-PreRender(6)母版页-PreRender

所以,要改变变量的值应放在:母版页中的Init事件中,放在Load事件中是不行的.

        protected void Page_Init(object sender, EventArgs e)

        {

            if (!IsPostBack)

            {

                WebConfigSelect();//此方法对变量进行了初始化或者改变

            }

        }

5.模板页或内容页中的路径最好使用"~/"而不要使用相对路径

posted on 2009-04-21 10:31  一天进步一点  阅读(2702)  评论(0编辑  收藏  举报