"对象引用未设置"在Visual Studio 2010中的asp.net default.aspx文件的"设计"视图中显示

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(和代码隐藏),然后复制到我的其他代码(类,模块和文本文件).这是我现在正在使用的解决方案文件,正如我所提到的,它昨天工作正常.在这两种情况下,当我关闭当天的项目时,我恰巧在表单上有相同的控件集.我没有尝试在表单中添加其他控件.

R.C*_*R.C 1

这和方法有关系 OnInit

\n\n

解决此问题的一种方法是在调用后检查我们是否处于设计模式base.OnInit()

\n\n
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\n
this 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