ASP.Net:如何从内容页面事件处理程序调用主页面事件处理程序?

时间:2011-05-17 18:58:26

标签: asp.net

我有一个母版页,其中有一个链接按钮。在其中一个内容页面中,我需要隐藏链接按钮并替换为图像按钮。图像按钮的单击事件处理程序应该与母版页中链接按钮的单击事件完全相同。那么有没有办法从内容页面中的图像按钮单击事件处理程序调用主页面链接按钮单击事件处理程序?

我已经研究过,如果母版页要在内容页面中调用事件处理程序,似乎有很多...

任何inout都将受到高度赞赏。

由于

3 个答案:

答案 0 :(得分:6)

在您的母版页代码中,将事件处理程序上的protected关键字替换为public。

    public void LinkButton1_Click(object sender, EventArgs e)
    {
        //Do Stuff Here
    }

在您的内容页面中使用主类型指令

<%@ MasterType VirtualPath="~/masters/SourcePage.master"" %> 

在内容页面的代码中,调用Master事件处理程序如下

    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        this.Master.LinkButton1_Click(sender, e);
    }

请注意代码是C#。

我正在考虑更直接地调用母版页事件处理程序

答案 1 :(得分:4)

还有@ Master指令(MSDN Article)。当从Master属性访问母版页时,此方法提供了一种创建对ASP.NET母版页的强类型引用的方法。

结果如声明所示,并且无需演员。

使用示例:

<%@ MasterType VirtualPath="~/masters/SourcePage.master"" %>

使用此指令实际上产生的代码与@ Scott的实现相同,但不要求您知道母版页的类型。

然后您可以开始使用您的母版页:

Master.Title = "My Page Title";

您也可以通过这种方式调用主人的事件。使用Master.FindControl查找所需的主控件。

查找控件示例:

HtmlAnchor btnMyImageButton = (HtmlAnchor)Master.FindControl("btnMyImageButton");

但我建议使用OnClick的{​​{1}}属性,并将其设置为Master页面上可公开访问的void / Sub。然后简单地称之为void / Sub,如:

ImageButton

答案 2 :(得分:0)

如果您的母版页是MyMaster,请创建如下属性:

Public Shadows ReadOnly Property Master() As MyMaster
    Get
        Return CType(MyBase.Master, MyMaster)
    End Get
End Property

然后,无论您想要在母版页中访问什么,请确保它是公开的,您将能够通过以下方式访问它:

Master.xxxx