如何在子控件中访问父控件的方法
从子控件访问父页面和控件方法的简单技巧
引言
本文面向刚开始使用用户控件的初学者。在使用用户控件时,有时需要从子用户控件访问父用户控件和父页面中声明的方法。这里提供一个简单的解决方案。
背景
我遇到了同样的问题,需要从子用户控件访问父用户控件中声明的方法,并开始寻找解决方案。我使用 abstract
类得到了一个简单的解决方案,因为无法访问 Parent
对象中的用户自定义方法。
这里有一个小技巧。我创建了 abstract class AbstractUserControl
和 AbstractPage
,其中 AbstractUserControl
继承自 System.web.UI.UserControl
,而 AbstractPage
继承自 System.Web.UI.Page
。我将这两个类放置在 App_code 文件夹中,以便在站点中的任何地方都可以访问它们。
Using the Code
这里是 abstract
类,其中声明了 abstract
方法。这些 abstract
方法将在需要从子控件调用的 Page
或 UserControl
中被重写。
namespace CodeProject.Sample
{
public abstract class AbstractPage : System.Web.UI.Page
{
public AbstractPage()
{
//
// TODO: Add constructor logic here
//
}
// implementation in the concrete class
public abstract void callMefromChild();
}
}
我添加了一个类似的 abstract
类供用户控件继承。
接下来,我使用这些 abstract
类来实现功能。现在,从子控件访问父页面方法变得非常简单。以下是代码片段
protected void btnClick_Onclick(Object sender, EventArgs e)
{
((AbstractPage)Parent.Page).callMefromChild();
}
将 Parent.Page
简单类型转换为 AbstractPage
类,可以暴露 Page
中的用户自定义方法。我们可以使用相同的技巧来访问从子用户控件访问父用户控件中声明的方法。
我长期使用 The Code Project,但从未为社区做出贡献。今天我从这篇文章开始,并希望以后能提出一些有趣的东西。希望这能帮助到某人。如果您需要任何澄清,请随时发表评论。