首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.Net :如何从内容页事件处理程序调用母版页事件处理程序?

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

Stack Overflow用户
提问于 2011-05-18 02:58:26
回答 3查看 14.7K关注 0票数 4

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

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

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

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-18 09:14:25

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

代码语言:javascript
复制
    public void LinkButton1_Click(object sender, EventArgs e)
    {
        //Do Stuff Here
    }

在内容页中使用Master Type指令

代码语言:javascript
复制
<%@ MasterType VirtualPath="~/masters/SourcePage.master"" %> 

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

代码语言:javascript
复制
    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        this.Master.LinkButton1_Click(sender, e);
    }

注意,代码是C#。

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

票数 7
EN

Stack Overflow用户

发布于 2011-05-18 08:45:32

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

如上所述,结果是强类型的,不需要强制转换。

示例用法:

代码语言:javascript
复制
<%@ MasterType VirtualPath="~/masters/SourcePage.master"" %>

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

然后你就可以开始使用你的母版页了,比如说:

代码语言:javascript
复制
Master.Title = "My Page Title";

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

find控件示例:

代码语言:javascript
复制
HtmlAnchor btnMyImageButton = (HtmlAnchor)Master.FindControl("btnMyImageButton");

但我建议使用ImageButton的OnClick属性,并在母版页上将其设置为可公开访问的空/子对象。然后简单地调用void/Sub,就像这样:

代码语言:javascript
复制
Master.ImageButtonClick();
票数 4
EN

Stack Overflow用户

发布于 2011-05-18 03:01:29

如果母版页是MyMaster,则创建如下属性:

代码语言:javascript
复制
Public Shadows ReadOnly Property Master() As MyMaster
    Get
        Return CType(MyBase.Master, MyMaster)
    End Get
End Property

然后,无论您想在母版页中访问什么,请确保它是公共的,并且您可以通过以下方式访问它:

代码语言:javascript
复制
Master.xxxx
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6035730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档