我创建了一个名为MyMasterPage的MasterPage. public partial class MyMasterPage : System.Web.UI.MasterPage{ protected void Page_Load(object sender, EventArgs e) { }} 我还在app_code中创建了一个名为Class1的类: public class
public partial class MyMasterPage : System.Web.UI.MasterPage { protected void Page_Load(object sender, EventArgs e) { } }
我还在app_code中创建了一个名为Class1的类:
public class Class1 { public Class1() { MyMasterPage m; } }
在Class1中我想引用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
除非您将其放在App_Code下,否则您将无法引用MyMasterPage.通常在这种情况下,您将创建一个继承自MasterPage的基本母版页.例如public partial class MasterPageBase : System.Web.UI.MasterPage { // Declare the methods you want to call in Class1 as virtual public virtual void DoSomething() { } }
然后在您的实际母版页中,继承自您的MasterPageBase,而不是继承自System.Web.UI.MasterPage.覆盖继承页面中的虚拟方法.
public partial class MyMasterPage : MasterPageBase
在Class1中你需要引用它(我假设你从Page类的MasterPage属性获得母版页,你的代码看起来像……
public class Class1 { public Class1(Page Target) { MasterPageBase _m = (MasterPageBase)Target.MasterPage; // And I can call my overwritten methods _m.DoSomething(); } }
这是一个漫长的蜿蜒方式,但到目前为止,我能想到的唯一一件事就是ASP.NET模型.