[ASP.NET] 自訂 BasePage

  • 13720
  • 0

摘要:[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

http://hunterpo.travelplus.com.tw/post/ASPNET-e5a682e4bd95e981bfe5858de9a081e99da2e9878de696b0e695b4e79086e69982e9878de8a487e98081e587ba.aspx

 

在 web.config 檔案中,於 <pages> 標籤,加入 pageBaseType 屬性,

在往後新增的頁面中,偕直接繼承所指定的 BasePage ,就不用一個去修改,萬一之後繼承的 BasePage 的

名稱改了,也不用一個個 Page 去修改。

這邊小弟測試了一陣子,依然無法讓 Code Behind 模式 ,正常執行。

懷疑,pageBaseType 屬性,是否應該加上組件名稱或是檔案名稱,不過,

試了幾種組合,依然無效。

 

 

 

 

Link

pages 項目 (ASP.NET 設定結構描述)

 

三小俠  小弟獻醜,歡迎指教