摘要:[ASP.NET] 自訂 BasePage
Introduction
建立 BasePage 可以讓頁面具有相同的功能,可以減少程式碼的撰寫,也具有擴充性。
這邊只是簡單紀錄如何建立 BasePage 。
Example
sample1
首先先新增一個 BasePage 類別
撰寫 BasePage.cs
public class BasePage : System.Web.UI.Page { public BasePage() { // // TODO: 在此加入建構函式的程式碼 // } //建立 Show 方法,提供給繼承的頁面使用 protected void Show() { Response.Write("BasePage" + "<br />"); }
修改 Default.aspx.cs
public partial class _Default : BasePage { protected void Page_Load(object sender, EventArgs e) { //引用 BasePage 函式 Show(); } }
測式輸出結果
sample2
在 web.config 檔中 標籤 <pages> 加入屬性 pageBaseType 來定義頁面表單偕繼承 BasePage 類別;
不過這邊小弟只試出 Inline 模式,Code Behind 目前還是 error。
首先加入 pageBaseType 屬性
再來增加一個頁面來測試,使用Inline 模式
撰寫程式碼
測試結果
sample3
增加一個頁面,測試 Code Behind 模式
修改程式碼
C# 為單一繼承語言,若是已經 pageBaseType 屬性,必須修改預設繼承類別。
若不修改繼承,無法使用 BasePage 的 Show 函式。
//public partial class TestCodeBehind : System.Web.UI.Page //修改預設類別 public partial class TestCodeBehind { protected void Page_Load(object sender, EventArgs e) { } }
測試結果
問題
這邊小弟斗膽提出問題,查詢網路資料,
http://blog.miniasp.com/post/2008/01/How-to-set-a-global-BasePage-in-ASPNET.aspx
在 web.config 檔案中,於 <pages> 標籤,加入 pageBaseType 屬性,
在往後新增的頁面中,偕直接繼承所指定的 BasePage ,就不用一個去修改,萬一之後繼承的 BasePage 的
名稱改了,也不用一個個 Page 去修改。
這邊小弟測試了一陣子,依然無法讓 Code Behind 模式 ,正常執行。
懷疑,pageBaseType 屬性,是否應該加上組件名稱或是檔案名稱,不過,
試了幾種組合,依然無效。
Link
三小俠 小弟獻醜,歡迎指教