ASP.Net:如何从内容页事件处理程序调用母版页事件处理程序



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

我已经研究了一下,如果母版页想要调用内容页中的事件处理程序,似乎有很多

......

任何外出将不胜感激。

谢谢

在母版页的代码隐藏中,将事件处理程序上的受保护关键字替换为 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#。

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

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

结果如所述为强类型,无需强制转换。

用法示例:

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

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

然后,您可以通过以下方式开始使用母版页:

Master.Title = "My Page Title";

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

查找控件示例:

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

但是我建议使用ImageButtonOnClick 属性,并将其设置为母版页上可公开访问的 void/Sub。然后简单地称该 void/Sub 为:

Master.ImageButtonClick();

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

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

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

Master.xxxx

最新更新