程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ASP.NET 2.0 中的母版頁詳解

ASP.NET 2.0 中的母版頁詳解

編輯:.NET實例教程
為了減少在網頁設計時出現的變一頁則動全站的問題,vs2003升級到vs2005後增加了母版的概念。

  你可以把它想像成為“網頁模版”,與之不同的是,再也不必每個頁面都去更新了,修改一次,所有的網頁都會改變,做到了一勞永逸。 

  下面先進行一個簡單的母版使用演示:

  1、首先打開visual studio 2005,新建一個ASP.Net網站,文件系統,C#。

  2、在解決方案資源管理器中,右鍵新建一個新項:



  3、選擇母版頁:



  4、打開MasterPage.master,裡面有一個contentplaceholder控件,注意不要控件裡面寫什麼東西。

  我們轉到設計視圖,在這個控件外面加上header和footer 兩句文本。



  5、保存後我們就可以用它來做其它頁面了。有兩種方法,1是在母版頁任意位置右鍵,點擊添加內容頁;2 是在解決方案資源管理器上新建新項,在生成ASPx頁面時勾選“選擇母版頁”



  6、選擇相應的母版頁



  7、在新生成的頁面源代碼只有這幾句:

 
  1. <%@PageLanguage="C#"MasterPageFile="~/MasterPage.master"AutoEventWireup="true"
      CodeFile="Default2.ASPx.cs"Inherits="Default2"Title="UntitledPage"%>
  2. <ASP:ContentID="Content1"ContentPlaceHolderID="ContentPlaceHolder1"Runat="Server">
  3. </ASP:Content>

  我們可以看到一個content控件,這個東西對應母版頁的ContentPlaceHolder1控件,轉換到視圖頁面:



  8、其中頁頭和頁腳的文字都是灰色的,我們只能在 content中進行編輯。

  保存後訪問default2.ASPx這個頁面,F5.,我們看到頁面:


  9、和想像的一樣吧,我們再來看看源代碼:

 
  1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xHtml1-transitional.dtd">
  2. <htmlXMLns="http://www.w3.org/1999/xHtml">
  3. <head><title>
  4. UntitledPage
  5. </title></head>
  6. <body>
  7. <formname="aspnetForm"method="post"action="Default2.aspx"id="ASPnetForm">
  8. <div>
  9. <inputtype="hidden"name="__VIEWSTATE"id="__VIEWSTATE"
       value="/wEPDwULLTEwMDUyNjYzMjhkZASHJAhe9XmxUHPbOeONMX2y6XYi"/>
  10. </div>
  11. <div>
  12. thisisthepage'sheader<br/>
  13. thispage'scontent:hello,world!<br/>
  14. thisisthepage'sfooter </div>
  15. </form>
  16. </body>
  17. </Html>

  母版內容是放在一個div中的,而content頁面並沒有放在單獨的div,就是說在母版不會給子頁添加任何的多余代碼。這就給我們編程和網頁布局帶來了很大的靈活性,我們可以充分利用CSS+DIV的形式定位,亦可以用table方式進行定位。修改時也不必每個頁面都去修改。

  10、對於不是一塊固定內容的母版,我們可以用多個ContentPlaceHolder1來進行布局,下面的例子是用table來定位的:



  11、在相應的子頁面裡會有兩個content:



  生成的代碼:

 
  1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xHtml1-transitional.dtd">
  2. <htmlXMLns="http://www.w3.org/1999/xHtml">
  3. <head><title>
  4. UntitledPage
  5. </title></head>
  6. <body>
  7. <formname="aspnetForm"method="post"action="Default3.aspx"id="ASPnetForm">
  8. <div>
  9. <inputtype="hidden"name="__VIEWSTATE"id="__VIEWSTATE"
      value="/wEPDwUKMTY1NDU2MTA1MmRkPjWLPyqA5JXcW5ivHc0NiYajQTU="/>
  10. </div>
  11. <div>
  12. thisisthepage'sheader<br/>
  13. <table>
  14. <tr>
  15. <td>
  16. ohmyContent1
  17. </td>
  18. <td>
  19. himyContent2
  20. </td>
  21. </tr>
  22. </table>
  23. thisisthepage'sfooter 
  24. </div>
  25. </form>
  26. </body>
  27. </Html>

  12、要靈活應用,CSS雖然也可以用DIV來解決這個問題,但是一些非標准控件的樣子是很難用CSS來控制的,如果你做了另外一套母版MasterPage2.master,你可在頁面中動態設置:

  protected void Page_PreInit(object sender, EventArgs e)
{
 MasterPageFile = "~/MasterPage2.master";
}
  先到這裡,據說還可以嵌套應用,不過目前是夠用了,配合一下theme的使用,下次再說。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved