我有一个自定义控件,它的工作fine...except该控件不能在设计时呈现。(我使用的是VS2008)
我认为许多开发自定义控件的人都会遇到这个problem...The错误,我得到的错误是“创建控件时出错- CustomControlName”对象引用没有设置为对象的实例。
我想找个合适的工作。或者至少调试这个...(既然这是一个设计时的问题,如何调试呢?)
我已经在OnInit,OnPreRender,RenderContents,CreateChildControls方法上尝试了if( !DesignMode)代码(我只是在黑暗中拍摄)……
请帮帮我。我真的希望这不是一个VS bug!
发布于 2008-12-19 05:48:28
BFree的注释是最有可能的问题,对于要在设计视图中显示的控件,它需要一个无参数构造函数,因为设计查看器不知道通常如何实例化控件。
如果你有一个无参数的构造器,你能粘贴一些代码来显示发生了什么吗?
发布于 2008-12-19 06:28:11
正如Glenn提到的,第一个问题可能是没有无参数的构造函数。
第二种可能是您在OnLoad期间调用方法,或者您提到的其他方法具有未初始化的参数,或者尝试执行通常在运行时完成的数据库调用等。
除非他们最近修复了这个bug,但我不知道,要记住的是,DesignMode属性适用于第一层和第二层嵌套控件,但除此之外,它通常不能正常工作。(例如,form包含一个包含另一个UserControl2的UserControl1,DesignMode对form和1有效,但对2无效)。
也同意Glenn的观点,看看一些代码会有所帮助。
*从我最近使用嵌套用户控件的经验来看,它还没有修复。
发布于 2008-12-24 00:46:31
在您的OnPreRender & CreateChildControls方法中,它调用this.Page。您可能希望尝试将它们包装在
if (this.Page != null)
{
.....
}因为我不认为此时会有一个Page对象&我非常确定PreRender & CreateChildControls将在设计视图中被调用。我已经有一段时间没有编写自定义服务器控件了,所以我可能是错的(最近一直在MVC中工作)。
https://stackoverflow.com/questions/379355
复制相似问题