5

ここで同様の問題のある別のスレッドを見つけました: Visual studio 2010:デザインビューを表示できません が、私の場合はカスタムコントロールを使用していません。

Win7 32ビットマシンで、Visual Studion 2010を使用して、VisualBasicコードを使用してasp.netWebアプリケーションを作成しています。default.aspxフォームに標準のWebコントロールを追加しました。

昨日、プロジェクトを保存し、デバッグモードで少し実行してから、Visual Studioを閉じました(最後の保存以降、変更はありません)。

今日、ソリューションを開いてdefault.aspxファイルのデザインビューを見ると、代わりに表示されるはずのすべてのコントロールに「コントロールの作成エラー-コントロール名。オブジェクト参照がオブジェクトのインスタンスに設定されていません」と表示されます。

ソリューションに変更を加えませんでした。

エラーリストにエラーは表示されません。Webアプリはエラーなしでビルドされます。アプリはエラーなしで(デバッグモードで)実行され、Webページにコントロールを正しく表示します。

default.aspx.designer.vbファイルが古くなっている可能性があるという提案がありました。提案は、ファイルを削除し、同じ名前の空のファイルを作成し、ソリューションを開き、default.aspxファイルを再保存してデザイナーファイルを再生成することでした。私はそれをしました、そしてそれは影響を与えませんでした。

システムにアップデートをインストールしていません。

これの基礎として使用したWebアプリ用の他のVSソリューションは、まだ正常に開いています。彼らは彼らのデザインビューでこの問題を示していません。

すべてのコードは、VisualStudioと同じマシンにローカルに保存されます。バージョン管理は使用されていません。

このプロジェクトでこの問題が発生したのは、実際には2回目です。それは2日前に起こりました。そのとき、新しいソリューションファイルを開始し、default.aspx(および分離コード)を最初から再作成してから、他のコード(クラス、モジュール、およびテキストファイル)にコピーしました。これが私が現在使用しているソリューションファイルであり、前述したように、昨日は正常に機能していました。どちらの場合も、その日のプロジェクトを閉じたときに、偶然にもフォームに同じ一連のコントロールがありました。フォームに別のコントロールを追加しようとはしていません。

4

1 に答える 1

1

これは OnInit方法と関係があります。

base.OnInit()この問題の回避策の 1 つは、呼び出し後にデザイン モードになっているかどうかを確認することです。

protected override void OnInit( EventArgs e)
{
   base.OnInit(e);
   if(!this.DesignMode)
   {
      // place code here for dynamic control creation
         TextBox txtUserName = new TextBox();
         txtUserName.ID= "UserID"  ;
         usersPlaceholder.Controls.Add(txtUserName);
   } 
}

ビジュアル Web 開発者チームもこの問題を認識しており、次のように述べています。

this is a bug in VS 2010 that we’re now calling the OnInit() method at the 
design time; we are considering a fix for this in a future release of 
VisualStudio.

この問題の詳細については、こちらのブログで確認してください

于 2013-08-07T05:46:00.960 に答える