【发布时间】:2009-07-22 15:48:07
【问题描述】:
我在一个asp.net项目中有一个母版页,它提供了一个我想通过辅助函数在派生类中调用的方法,所以我尝试为我的页面创建一个基类:
// the master page
public partial class TheMasterPage : MasterPage {
public string TheMethod(string s1) {
// ...
}
}
// base class providing an helper method
public class HelperPage : Page {
protected bool HelperMethod() {
string value = ((TheMasterPage)this.Master).TheMethod("some value");
return (value == "something");
}
}
// derived class
public partial class Page1 : HelperPage {
protected void Page_Load(object sender,EventArgs e) {
if (HelperMethod()) {
// ...
}
}
}
但如果我尝试这样做,我会收到一条错误消息,提示“找不到类型或命名空间 HelperPage”。
有没有办法在不将母版页中的方法移动到 App_Code 文件夹的情况下做我想做的事情?
一般来说,是否可以从 asp.net 应用程序中引用应用程序本身定义的另一种类型?
编辑:
@John Rasch
我看到的方法是将基本页面存储在不同的程序集中。这样,您所要做的就是添加对该程序集的引用,并且您可以从 HelperPage 类型继承。
然后将所有内容移至 App_Code 文件夹就足够了;问题是,除非我还在 App_Code 下或在新程序集中为母版页创建基类,否则 HelperPage 将无法访问 MasterPage ......这可能是最明智的解决方案,但我在徘徊如果有办法避免这种情况 - 无论如何我无法理解为什么你不能访问应用程序中声明的类型......
【问题讨论】:
-
我确信有一种正确的方法可以做到这一点,我只是不知道它是什么。您会注意到我尽可能不使用网站的一些原因。
标签: c# asp.net master-pages