Tru*_*y C 5 asp.net web-applications object-reference visual-studio-2010
我在这里找到了另一个类似问题的线程: Visual Studio 2010:无法显示设计视图, 但在我的情况下,我没有使用自定义控件.
在Win7 32位机器上,我使用Visual Studion 2010使用Visual Basic代码创建一个asp.net Web应用程序.我已将标准Web控件添加到default.aspx表单中.
昨天我保存了项目,在调试模式下运行了一段时间,然后关闭了Visual Studio(自上次保存以来没有进行任何更改).
今天当我打开解决方案并查看default.aspx文件的Design视图时,应该显示的所有控件都说"Error creation control-control-name.对象引用未设置为对象的实例"
我没有改变解决方案.
错误列表中不显示任何错误.Web应用程序构建没有错误.应用程序运行时没有错误(在调试模式下)并在网页上正确显示控件.
我有一个建议,即default.aspx.designer.vb文件可能已过期.建议是删除文件,创建一个同名的空文件,打开解决方案,然后重新保存default.aspx文件以重新生成设计器文件.我这样做了,没有任何影响.
我没有在我的系统上安装任何更新.
我用作网络应用程序的其他VS解决方案仍然很好.他们的设计视图中没有显示此问题.
所有代码都与Visual Studio本地存储在同一台机器上.版本控制未使用.
这实际上是这个项目第二次发生在我身上.它发生在两天前.那时我启动了一个新的解决方案文件,从头开始重新创建default.aspx(和代码隐藏),然后复制到我的其他代码(类,模块和文本文件).这是我现在正在使用的解决方案文件,正如我所提到的,它昨天工作正常.在这两种情况下,当我关闭当天的项目时,我恰巧在表单上有相同的控件集.我没有尝试在表单中添加其他控件.
这和方法有关系 OnInit
。
解决此问题的一种方法是在调用后检查我们是否处于设计模式base.OnInit()
。
protected override void OnInit( EventArgs e)\n{\n base.OnInit(e);\n if(!this.DesignMode)\n {\n // place code here for dynamic control creation\n TextBox txtUserName = new TextBox();\n txtUserName.ID= "UserID" ;\n usersPlaceholder.Controls.Add(txtUserName);\n } \n}\n
Run Code Online (Sandbox Code Playgroud)\n\n视觉网络开发团队也意识到了这个问题,他们说:
\n\nthis is a bug in VS 2010 that we\xe2\x80\x99re now calling the OnInit() method at the \ndesign time; we are considering a fix for this in a future release of \nVisualStudio.\n
Run Code Online (Sandbox Code Playgroud)\n\n在他们的博客上查看此问题的完整详细信息
\n