一,什么是母版页css
事先把页面通用或共有的部分抽取出来,作成一个通用性较强的模板,每一个页面套用此模板能够简化设计与编码服务器
二,母版页与页面的区别this
1.扩展名——页面:.aspx 母版页:.master编码
2.声明指示符和类——页面:<%@ Page ...%> 派生自Page 母版页:<%@Master ....%> 派生自MasterPagespa
3.HTML结构:页面上有完整HTML结构,母版页通常也会有比较完整HTML结构设计
4.运行:页面能启动运行,母版页不能代理
三,母版页使用中的难点code
1.交换信息server
(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.命名(与用户控件相同)