2009-04-16 44 views
3

我已經創建了一個名爲MyMasterPage的母版頁。ASP.NET - 你如何引用一個不在app_code中的類

public partial class MyMasterPage : System.Web.UI.MasterPage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
} 

我也創建了一個名爲Class 1類中的app_code:

public class Class1 
{ 
    public Class1() 
    { 
     MyMasterPage m; 
    } 
} 

在Class我想引用MyMasterPage但我得到一個編譯器警告:

The type or namespace name 'MyMasterPage' could not be found (are you missing a using directive or an assembly reference?) 

做些什麼碼我需要添加才能使這個工作?

類在文件夾如下:

alt text http://www.yart.com.au/stackoverflow/masterclass.png

+0

到底在哪你的母版類關係到你的App_Code文件? – 2009-04-16 01:32:17

+0

您的代碼可以訪問App_Code文件夾中的Class1嗎? – TechTravelThink 2009-04-16 01:39:33

回答

1

嘗試把你的母版頁命名空間中的

5

您將無法引用MyMasterPage,除非你把它App_Code文件下,以及。通常在這種情況下,您將創建一個從MasterPage繼承的基礎母版頁。例如

public partial class MasterPageBase : System.Web.UI.MasterPage 
{ 
    // Declare the methods you want to call in Class1 as virtual 
    public virtual void DoSomething() { } 

} 

然後在你的實際母版頁,而不是從System.Web.UI.MasterPage繼承,從MasterPageBase繼承。覆蓋繼承頁面中的虛擬方法。

public partial class MyMasterPage : MasterPageBase 

在Class,你需要參考它(我假設你從一個Page類母版屬性的母版頁,代碼將看起來像......

public class Class1 
{ 
    public Class1(Page Target) 
    { 
     MasterPageBase _m = (MasterPageBase)Target.MasterPage; 
     // And I can call my overwritten methods 
     _m.DoSomething(); 
    } 
} 

這是一個非常漫長的方式,但迄今爲止,我能想到的唯一一件事情就是ASP.NET模型的工作原理。

1

fung通過使用基本頁面提供了一個很好的建議.App_Code文件存儲在不同的程序集然後是aspx頁面。這發生在Website Projects。

我不確定你是否有這個選項。但是,如果您選擇Web應用程序項目而不是網站項目,那麼您將不會遇到此問題。

這裏是一個博客貼子,可以提供一些線索:VS 2005 Web Project System: What is it and why did we do it? by Scott Guthrie

相關問題