ASP.NET 如何設定全站共用的 BasePage 類別

分享到噗浪!

開發一個網站時,難免會有哪種每一個都有的功能、變數(例如:頁面的權限控管判斷),通常我們會寫一支 BasePage 類別,並讓網站中的頁面類別繼承這個 BasePage 類別用以簡化程式碼的數量,但如果你很多頁都要做繼承的話,你可以用以下這個方法直接定義在 web.config 裡即可,就不用每一頁都去修改 Code Behind 的程式碼了。

只要在 web.config 設定檔內的 <pages> 裡即可宣告全站共用的 BasePage 類別,包括 BaseUserControl 也可以在這裡定義!

<pages pageBaseType="BasePage" userControlBaseType="BaseUserControl">

......

</pages>

MSDN2上的詳細說明:http://msdn2.microsoft.com/zh-tw/library/950xf363(VS.80).aspx

注意事項: 

  • 因為 C# 是單一繼承的語言(VB.NET 應該也一樣),所以如果你的 ASP.NET 頁面是用 Code Behind 的方式的話:



    public partial class _Default : System.Web.UI.Page
    {
        ......
    }



    必須要改成以下這樣才能真的繼承你在 web.config 中設定的 BasePage用:



    public partial class _Default
    {
        ......
    }



    如果你用 Inline 模式寫程式的話,就沒有這個問題,除非你有在 <%@ Page 定義 Inherits 屬性。

 

  

此文章由 will 發表於 2008/1/9 上午 12:01:00

永久連結 | 評論 (2) | 此文章的RSSRSS comment feed |

分類: ASP.NET

標籤: , ,

評論

三月 31. 2009 11:37

JLS

想請問一下,關於把BasePage 寫在 web.config 中的問題

我在 web.config 中已經有增加設定
<pages pageBaseType="JLS.NP.RP.BasePage.Pages,BasePage">

頁面程式內容如下
namespace JLS.NP.RP.WebSite
{
    public partial class Default
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("Page Test");
        }
    }
}

會發生 Response 找不到的問題, 請問是否我有那邊設定錯誤了?

另外請教在 .aspx 中的 Inherits 也要一併拿掉嗎?(我是 Code Behind)

麻煩了,謝謝.

JLS 台灣

三月 31. 2009 13:02

will

你多試幾次應該試的出來,就只有幾種組合而已,不可能不能用的。

will 台灣

新增評論


( 您輸入的Email不會顯示於網站上 )

  Country flag

biuquote
  • 評論
  • 線上預覽
Loading