如何处理内容页面中的母版页按钮事件?

时间:2010-04-20 15:44:08

标签: asp.net events master-pages onload

我的问题是我有一个动态创建内容的基页。我的母版页上有按钮可以触发我的基页需要了解的事件。但我的基页上的OnLoad函数在我的母版页上的Button_Command函数之前触发。因此,我需要找出一种方法来在Button_Command函数有机会设置变量之后加载我的基页,或者我必须从Button_Command函数调用我的基页中的函数。

3 个答案:

答案 0 :(得分:1)

您是否考虑过使用strongly typed master pages

您还可以查看我的answer此问题。

答案 1 :(得分:0)

我相信你可以通过界面

来做到这一点
public interface ICommandable
{
    public void DoCommand1(object argument);
}

因此子页面实现了这个接口

public class MyPage : Page, ICommandable
{
    public void DoCommand1(object argument) {

    }
}

在母版页上

public class Master : MasterPage
{
    public void Button_Command(object sender, EventArgs e)
    {
        if (Page is ICommandable)
        {
            (Page as ICommandable).DoCommand1(myargument);
        }
        else
            throw new NotImplementedException("The current page does not implement ICommandable");
    }
}

然而,自从我使用webforms以来已经很长时间了,所以我不能发誓这是有效的。我似乎记得以前写过类似的东西。

答案 2 :(得分:0)

您是否可以简单地将Button_Command逻辑封装到公共方法中,并从母版页上的Button_Command事件和子页面上的Load事件中调用该方法?像

这样的东西
protected void Page_Load( object sender, EventArgs e )
{
    var master = (MyMaster)this.Master;
    master.Foo();
}