2011-05-17 67 views
4

我有一个母版页,我有一个链接按钮。在其中一个内容页面中,我需要隐藏linkbutton并用图像按钮替换。图像按钮的点击事件处理程序应该与母版页中的链接按钮的点击事件完全相同。那么是否有一种方法可以通过Content页面中的图像按钮单击事件处理程序调用母版页链接按钮单击事件处理程序?ASP.Net:如何从内容页面事件处理程序调用母版页事件处理程序?

我已经研究并似乎有很多的情况下,母版页要调用的事件处理程序中的内容页面...

任何INOUT将高度赞赏。

感谢

回答

6

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

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

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

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

在代码后面的内容页面调用主事件处理程序如下

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

注意的代码是C# 。

我寻找到更多的直接调用母版页的事件处理程序

+0

感谢您的答复...是啊,这是我在找什么......我是从内容页面调用其他母版页面方法,让它们公开......我怎么没有考虑将事件公诸于众......对不起,我是新来的SF ..所以我不能给这个问题的答案是 – shazia 2011-05-19 16:44:36

+0

没问题,只要不要忘记当你获得足够的声望时,尽管你可能有足够的代表通过点击嘀嗒声来接受,但却不足以支持。我虽然错了,但:-) – 2011-05-19 22:16:23

0

如果你的母版页MyMaster,让这样的特性:

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

那么无论你想在母版页访问,确保它是公共的,你就可以访问它通过:

Master.xxxx 
4

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

结果如所述的强类型,并且不需要施放。

用法示例:

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

使用此指令实际上产生相同的代码@斯科特的实现,但并不需要你知道母版的类型。

然后就可以开始使用你的母版通过让说:

Master.Title = "My Page Title"; 

您可以从主这样调用的事件也是如此。使用Master.FindControl找到您想要的主控制。发现控制

例子:

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

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

Master.ImageButtonClick(); 
+0

感谢乌拉圭回合答复......最后一部分就是我一直在寻找... – shazia 2011-05-19 16:45:27