我一直试图找到这个问题的好答案,但似乎找不到。我有一个派生自基本页面的 ASP.NET 页面,如下所示:
public partial class MainPage : MyBasePage
{
protected void Page_Load(object sender, EventArgs e)
{
var loginTime = GetLoginTime(); // This works fine
}
}
和基本页面:
public partial class MyBasePage: Page
{
}
protected DateTime GetLoginTime()
{
// Do stuff
return loginTime;
}
现在我在该页面上有一个需要调用我的方法的用户控件......就像这样:
public partial class TimeClock : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
var loginTime = GetLoginTime(); // This does not work!
}
}
如您所见,出于显而易见的原因,我无法调用我的基本方法。我的问题是,如何从我的用户控件中调用此方法?我发现的一种解决方法是这样的:
var page = Parent as MyBasePage;
page.GetLoginTime(); // This works IF I make GetLoginTime() a public method
如果我将我的功能公开而不是受保护,这将有效。这样做似乎不是解决此解决方案的一种非常面向对象的方法,因此如果有人可以为我提供更好的解决方案,我将不胜感激!