ASP.net在Site.Master.cs类的Default.aspx.cs中调用函数

时间:2012-12-07 20:25:50

标签: c# asp.net visual-studio web-applications

所以在我的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();

2 个答案:

答案 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();
}