ASP.NET 2.0 - 无法从自定义控件访问父页面类

时间:2010-01-21 22:18:48

标签: asp.net

1)我上了课 public partial class MyDelivery:System.Web.UI.Page

2)ASCX在不同的子文件夹中 public partial class MyControls_Hello_Bye:System.Web.UI.UserControl

我无法从控件

访问#1父页面类

2 个答案:

答案 0 :(得分:0)

默认情况下,在不同的目录中,visual studio会为它们提供不同的命名空间,导致父页面类对控件不可见。

确保两个类的名称空间声明相同,或者使用using语句将父页面类名称空间导入到控件中。

答案 1 :(得分:0)

这个问题困扰了我很长一段时间。我不认为我的解决方案是完美的,但它确实有助于我的初级开发人员编码。我们有一个基本用户控件,所有用户控件都继承,我们(像你一样)我们有一个所有页面必须继承的基页类(团队规则)。在用户控件中是一个名为ParentForm的属性,它强类型化为包含它的特定页面类型(如果当时是可变的或未知的页面基类)。

在页面的加载事件期间,我们手动设置所有用户控件的Parentform属性(我们也在所有主页面控件的母版页中执行此操作)。

protected Page_Load(object sender, System.EventArgs e) 
{
    this.myControl.ParentForm = this;
    this.myControl2.ParentForm = this;
}

这提供了从任何用户控件到页面及其任何公开方法的即时访问。它还提供了一种标准化(在我们的团队中)允许控件通过ParentForm中的接口进行通信的方法。

我们的标准是手动执行此分配。对我来说,这是一个人员考虑因素,以确保开发人员了解他们正在添加的控件(如果您尝试访问它,则不设置ParentForm会导致空引用异常)。如果要自动执行此设置,可以使用基类的Page_InitComplete事件循环遍历任何用户控件,并将ParentForm设置为“this”。