1)我的页面类 公共部分类MyDelivery:System.Web.UI.PageASP.NET 2.0 - 父页类没有从自定义控件访问
2)ASCX是在不同的子文件夹 公共部分类MyControls_Hello_Bye:System.Web.UI.UserControl
我无法从控制
1)我的页面类 公共部分类MyDelivery:System.Web.UI.PageASP.NET 2.0 - 父页类没有从自定义控件访问
2)ASCX是在不同的子文件夹 公共部分类MyControls_Hello_Bye:System.Web.UI.UserControl
我无法从控制
这个问题让我生气了好一阵子。我不认为我的解决方案是完美的,但它确实有助于我的初级开发人员进行编码。我们有一个基本的用户控件,所有用户控件都继承,我们(如你)拥有一个所有页面必须继承的基本页面类(团队规则)。在用户控制是被强类型的特定页面类型将包含它(页基类,如果这是可变的或未知的时候)的特性称为ParentForm。
在页面的加载事件,我们手动设置所有用户控件(我们这样做,我们对所有的母版页水平控制母版页为好)的Parentform属性。
protected Page_Load(object sender, System.EventArgs e)
{
this.myControl.ParentForm = this;
this.myControl2.ParentForm = this;
}
这提供了从任何用户控件回到页面及其任何暴露方法的即时访问。它还提供了一个标准化的(在我们的团队中)允许控件通过ParentForm中的一个接口进行通信的方法。
我们的标准是手动执行这项任务。对我来说,这是一个人才的考虑,以确保开发人员都知道他们正在增加(未设置ParentForm会导致空引用例外,如果你尝试显然访问)的控制。如果你想自动地执行这个设置,你可以通过任何用户控件使用基类的Page_InitComplete事件循环,并设置ParentForm以“本”的方式。
作为在不同的目录访问#1父页面类将获得视觉工作室给他们默认不同的命名空间,造成父页面类不可见控件。
确保两个类的名称空间声明相同,或将父页面类名称空间导入到带有using
语句的控制器中。