我想我可能知道原因,但不知道如何在没有大量代码重写的情况下解决它(我更愿意避免)。
我有
public class datecontrol : basecontrol
{
private ImageButton _ImageButton;
private TextBox _EditControl;
private CalendarExtender _CalendarExtender;
....
public datecontrol{
_ImageButton=new ImageButton();
_EditControl=new TextBox();
_CalendarExtender=new CalendarExtender();
.....
_CalendarExtender.TargetControlID=_EditControl.ID;
}
}
和
public class basecontrol : Panel,INamingContainer
....
现在这是奇怪的部分。_CalendarExtender 在查找 _EditControl 的 ID 作为 TargetID 时会出错。这听起来像是一个命名容器的问题,所以我看了又看,找不到任何东西。然后我用调试器查看。_EditControl 和 _ImageButton 都将其命名容器设置this
为预期,但 _CalendarExtender 将其命名容器设置为null
.
我很想尝试自己解决这个问题,_CalendarExtender.NamingContainer=this;
但这是一个只读属性。
我能弄清楚这可能发生的唯一原因是因为_CalendarExtender 继承自ExtenderControl->Control。Panel 继承自 WebControl->Control 的位置。
有谁知道我可能遗漏的东西或解决此问题的方法或其他东西?