一,什麼是母版頁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.命名(與用戶控件相同)