【发布时间】:2025-12-06 21:50:02
【问题描述】:
我有一个母版页,其中有一个链接按钮。在其中一个内容页面中,我需要隐藏链接按钮并替换为图像按钮。图像按钮的单击事件处理程序应该与母版页中链接按钮的单击事件完全相同。那么有没有办法从内容页面中的图片按钮点击事件处理函数中调用母版页链接按钮点击事件处理函数呢?
我已经研究过,似乎有很多万一母版页面想要调用内容页面中的事件处理程序......
任何输入输出都将受到高度赞赏。
谢谢
【问题讨论】:
标签: asp.net
我有一个母版页,其中有一个链接按钮。在其中一个内容页面中,我需要隐藏链接按钮并替换为图像按钮。图像按钮的单击事件处理程序应该与母版页中链接按钮的单击事件完全相同。那么有没有办法从内容页面中的图片按钮点击事件处理函数中调用母版页链接按钮点击事件处理函数呢?
我已经研究过,似乎有很多万一母版页面想要调用内容页面中的事件处理程序......
任何输入输出都将受到高度赞赏。
谢谢
【问题讨论】:
标签: asp.net
在您的母版页代码中,将事件处理程序上的 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#。
我正在考虑更直接地调用母版页事件处理程序
【讨论】:
还有@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");
但我建议使用 ImageButton 的 OnClick 属性并将其设置为母版页上可公开访问的 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
【讨论】: