0

Visual Studio 2010を使用して、すでにプロジェクトの一部であるASP.Netページにフォームを追加しました。それをmyPage.aspxと呼びます。私は実際に別のアプリケーションの作業ページからフォームをコピーして貼り付けていました。そのため、最初に.aspxコードをmyPage.aspxファイルに貼り付け、次にC#コードをmyPage.aspx.csファイルに貼り付けました。myPage.aspxファイルのページディレクティブをコピーしませんでした。また、myPage.aspx.csファイルのクラス宣言コードもコピーしませんでした。myPage.aspxの本体にテーブルを貼り付けるだけで、myPage.aspx.csに処理コードを送信するものもあります。

Webサイトを構築しようとすると、すべてのコントロールで「名前'whateverControl'は現在のコンテキストに存在しません」というエラーが発生しました。Intellisenseが機能していて、コントロールが正常に機能しているため、これは私には意味がありませんでした。ページのCodeFile属性とInherits属性を再確認しましたが、すべて正しいものでした。

さらに、「ページの作成」コマンドを使用すると、ページは正常に作成されました。「Webサイトの構築」を使用した場合にのみ、「存在しない」エラーの長いリストが表示されました。「Webサイトの再構築」は役に立ちませんでした。Visual Studioをシャットダウンして再度開いても、違いはありませんでした。やがて問題が見つかったので、ここで自分の質問に答えています。

4

1 に答える 1

0

myPage.aspxとmyPage.aspx.csは完全に問題ないことが判明しました。問題は、以前、他の誰かが(.aspx.csではなく).aspxページをコピーしていて、他の2つの.aspxページにコピーしていて、これを行ったときにCodeFile属性とInherits属性もコピーしていたことでした。したがって、これらのページは両方とも、私が作業していたページとまったく同じCodeFileおよびInherits設定を持っていました。つまり、3つのページのPageディレクティブでまったく同じ設定が使用されていました

CodeFile = "myPage.aspx.cs" Inherits = "myPage"

どうやらこれはコンパイラによって許可されており、ページの1つにのみ存在するコントロールを探している.aspx.csファイルにコードがない限り機能します。

コピーした他の2つのページからこれらの属性を削除すると、すべてが正常にコンパイルされました。

于 2013-01-15T20:33:10.140 に答える