zoukankan      html  css  js  c++  java
  • 母版页

    一,什么是母版页

    事先把页面通用或共有的部分抽取出来,做成一个通用性较强的模板,每个页面套用此模板可以简化设计与编码

    二,母版页与页面的区别

    1.扩展名——页面:.aspx    母版页:.master

    2.声明指示符和类——页面:<%@ Page ...%>  派生自Page  母版页:<%@Master ....%> 派生自MasterPage

    3.HTML结构:页面上有完整HTML结构,母版页一般也会有比较完整HTML结构

    4.运行:页面能启动运行,母版页不能

    三,母版页使用中的难点

    1.交换信息

    (1)从页面操作母版页

    I,如何找到母版页对象

    this.Master——当前页面的母版页

    II,如何给母版页的控件赋值

    法一:事先给母片页做好属性,通过属性来赋值。

     public string LabelValue
        {
            get
            {
                return Label1.Text;
            }
            set
            {
                Label1.Text = value;
            }
        }

    法二:通过母版页对象的FindControl方法来操作。

     protected void Button1_Click(object sender, EventArgs e)
        {
            //取值
            string s = TextBox1.Text;
            //扔到母版页去
            //1.找到母版页 Master属性——当前页面所套用的母版页
            MP master = this.Master as MP;
            //2.送到母版的Label中去
            //法一:
            //master.LabelValue = s;
            //法二:
            Label lbl = master.FindControl("Label1") as Label;
            lbl.Text = s;
        }

    (2)从母版页操作页面

    I,使用Session+OnLoadComplete方法配合使用(与用户控件使用方法相同)

    II,使用代理。在母版页中声明、创建和调用代理;在页面的PageLoad把代理挂到页面的方法中去。

     public delegate void SendValueDelegate(string s);
        public event SendValueDelegate SendValue;
    
        protected void Button2_Click(object sender, EventArgs e)
        {
            if (SendValue != null)
            {
                SendValue(TextBox1.Text);  //母版页中的TextBox
            }
        }
     protected void Page_Load(object sender, EventArgs e)
        {
            //找到母版页
            MP master = this.Master as MP;
            master.SendValue += master_SendValue;
        }
    
        void master_SendValue(string s)
        {
            TextBox1.Text = s;   //页面中的Textbox
        }

    2.路径问题(和用户控件相同)

    (1)控件和标签的路径:使用runat=server的控件,服务器自动转化相应的路径
    (2)样式表路径(背景图):使用外部样式表。在外部样式表中指定背景图片,在母版页中引用进样式表来。在每个套用母版页的页面中,呈现的时候都会自动进行样式表引用路径的转换。(样式表引用会自动转换,但脚本文件的引用是不会自动转换需要使用ResolveClientUrl()手动转换脚本文件的路径)
    (3)脚本文件。一般来说在母片页中引用脚本文件,但是需要使用ResolveClientUrl()方法来转换路径。
    <script src="<%= ResolveClientUrl("Script/JavaScript.js") %>"></script>
    <link href="CSS/StyleSheet.css" rel="stylesheet" />
    (4)C#中的路径。使用"~/sdfas/asdf"这种应用程序路径。Response.Redirect("~/Default.aspx")

    3.脚本与样式

    在母版页的<head>中会生成一个<ContentPlaceHolder>它是用来为使用此母版页的页面或二级母版页提供扩展<head>中的样式和脚本的功能
    如果在二级母版页中,对应的<head>中的<Content>里面一般需要再加一个<ContentPlaceHolder>用来给页面使用。

    4.命名(与用户控件相同)

  • 相关阅读:
    BZOJ1941Hide and Seek
    数学与树学(娱乐向)
    树状数组(模板)
    BZOJ2716天使玩偶
    BZOJ3262陌上花开
    BZOJ3781小B的询问
    BZOJ3236作业
    Bsgs模板
    HNOI2008明明的烦恼
    BZOJ1211树的计数
  • 原文地址:https://www.cnblogs.com/William-1234/p/4563732.html
Copyright © 2011-2022 走看看