在Asp.net 2.0中,提供了一個MasterPage的功能,它可以讓我們很方便的完成頁面的整體結構相同的網站,而且後期修改介面的時候只要修改一下MasterPage即可,無需一個個介面進行修改,這樣就大大的方便了開發人員.其實類似這種技術在Asp.net1.1中也可以實現.
一、 思路分析
對於可以用MastetrPage的網站來說,它的頁面結構大部份是一至的,比如頂部、底部都是一樣的,只不過左右側顯示的內容不同。這個時候,你不妨把左右兩側的內容也分別放在使用者控制項中,然後根據當前的訪問地址來動態載入使用者控制項,這樣到時候只要修改動態載入的使用者控制項的內容,或是MasterPage的架構,即可實現修理網站的目的。
二、 實現過程
首先取得當前訪問的檔案地址,代碼如下:
//取得當前訪問的路徑
string strRequestUrl = Request.Url.AbsolutePath.ToString();
//取得當前訪問的檔案名稱,並轉換成小寫
string strNowViewFile = strRequestUrl.Substring((strRequestUrl.LastIndexOf(@"/") + 1)).Trim().ToLower();
然後點擊“添加?添加Web使用者控制項”建立三個使用者控制項,分別命名為MasterPage.ascx、Head.ascx和Foot.ascx,在MasterPage.ascx中添加一個三行兩列的表格,然後將Head.ascx和Foot.ascx控制項拖到MasterPage.ascx中,同時在左右兩側均添加一個PlaceHolder控制項,分別命名為hldLeftControl和hldRightControl,完成後效果如下:
Head.ascx |
hldLeftControl |
hldRightControl |
Foot.ascx |
此時只要將MasterPage.ascx拖到具體的頁面中,比如Index.aspx,運行後就會顯示頂部、底部的內容。接下來要根據當前訪問的檔案地址,確定動態載入哪些使用者控制項到左右兩側位置,這部份操作在MasterPage.ascx.cs中完成。代碼如下:
switch(strNowViewFile)
{
//如果當前訪問的是首頁
case "index.aspx":
//建立使用者控制項類的對象,類名與使用者控制項的名稱是相同的
Control_Index_IndexRightControl indexRightControl;
//載入使用者控制項
indexRightControl = (Control_Index_IndexRightControl)Page.LoadControl("Control_Index_IndexRightControl.ascx");
//在右側的PlaceHolder控制項中顯示使用者控制項
plhRightControl.Controls.Add(indexRightControl);
break;
//載入會員註冊部份
case "Register.aspx":
Control_Login_Register register;
register = (Control_Login_Register)Page.LoadControl("Control_Login_Register.ascx");
plhRightControl.Controls.Add(register);
break;
default:
indexRightControl = (Control_Index_IndexRightControl)Page.LoadControl("Control_Index_IndexRightControl.ascx");
plhRightControl.Controls.Add(indexRightControl);
break;
}
添加了以上代碼後,如果訪問的頁面是index.aspx,在index.aspx頁右側,就會載入Control_Index_IndexRightControl.ascx控制項的內容,如果訪問的是Register.aspx頁,右側就會載入Control_Login_Register.ascx控制項的內容.這樣就實現了類似MasterPage的功能.