我有一个母版页,其中包含一个方法,我从内容页面代码后面使用了很多。在那些代码背后,我有一个方法可以复制很多,所以我想我会把它放在我可以继承的东西中。不幸的是,我现在无法从基类中调用我的母版页代码中的方法。我想我应该知道如何,今天我可能很傻,但我无法理解。
这是一些代码!请忽略任何啸叫错误,我只是在脑海中输入:)
母版页代码隐藏
public partial class Site : MasterPage
{
public void MyMethod()
{
// Do Something...
}
}
内容(儿童)页面
声明
<%@ MasterType VirtualPath="~/Site.Master" %>
代码隐藏
作品
public class Test : Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.Master.MyMethod();
}
}
不起作用
public class Test : TestClass
{
protected void Page_Load(object sender, EventArgs e)
{
OtherMethod();
}
}
public class TestClass : Page
{
public void OtherMethod()
{
this.Master.MyMethod();
}
}
现在,看着它,我直观地知道“this.Master”无法正常工作,但我没有任何灯泡可以回答。如何获取对母版页方法的引用?
谢谢, 理查德
答案 0 :(得分:3)
您必须首先转换为MasterPage类的类型(在本例中为Site),然后您可以调用在类后面的代码中定义的公共方法...
public class TestClass : Page
{
public void OtherMethod()
{
((Site) this.Master).MyMethod();
}
}
答案 1 :(得分:1)
你应该将this.Master投射到网站:
((Site)this.Master).MyMethod();
答案 2 :(得分:0)
您必须将this.Master强制转换为Site类型,以便访问在Site:MasterPage上定义的方法。
public class TestClass : Page
{
public void OtherMethod()
{
((Site)this.Master).MyMethod();
}
}