所以在我的Default.aspx页面上,我有几个列表框,我在page_load上填充。
但是,如果用户更改了这些列表框并想要恢复原始设置,我想在Top.Master中定义一个顶部的按钮来调用相同的函数增益来恢复原始值。
如何从Site.Master文件中获取对_Default对象实例的引用?有没有办法全局访问首次加载页面时调用的_Default实例?或者我是否需要在某处手动存储?
例如:
Default.aspx.cs:
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
setConfigurationData();
}
public void setConfigurationData()
{
//Do stuff to elements on Default.aspx
Site.Master.cs
namespace WebApplication1
{
public partial class SiteMaster : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void RefreshMenu1_MenuItemClick(object sender, MenuEventArgs e)
{
//Need to call this function from an instance of _Default, but I don't know
//how to retrive this or save it from when it is first created
//_Default.setConfigurationData();
答案 0 :(得分:3)
将此类范围的变量添加到主页面
private System.Web.UI.Page currentContentPage = new System.Web.UI.Page();
然后将此方法添加到您的母版页
public void childIdentity(System.Web.UI.Page childPage)
{
currentContentPage = childPage;
}
现在,在默认页面的Page_Load中添加
SiteMaster masterPage = Page.Master as SiteMaster;
masterPage.childIdentity(this);
现在,您的母版页应该能够通过其currentContentPage变量中的引用访问“默认”页面上的对象。
答案 1 :(得分:0)
使用名为setConfigurationData
的虚拟方法为要继承的页面创建基类。然后在Master页面中,将Page
对象强制转换为基类并调用方法。
public class MyBasePage : Page
{
public virtual void setConfigurationData()
{
//Default code if you want it
}
}
在您的信息页中:
public partial class MyPage : MyBasePage
{
public override void setConfigurationData()
{
//You code to do whatever
}
}
母版页:
protected void RefreshMenu1_MenuItemClick(object sender, MenuEventArgs e)
{
MyBasePage basePage = (MyBasePage)Page;
basePage.setConfigurationData();
}