web-dev-qa-db-ja.com

名前 'controlname'は現在のコンテキストに存在しません

私が取り組んでいるWebアプリケーションがあります(ASP.NET2.0とC#、VS2005を使用)。すべてがうまく機能し、突然エラーが発生しました:

Error 1 The name 'Label1' does not exist in the current context

そして、ページのコードビハインドでコントロールを使用するたびに、43個の種類があります。

これは1ページでのみ発生します。そして、コードビハインドがコントロールを認識していないかのようです。もう1つの興味深い点は、インテリセンスがコントロールを取得していないことです。

ソリューションファイルをクリーンアップし、objファイルを削除し、ファイルをプロジェクトから除外してから再度追加し、VSを閉じて再起動し、コンピューターを再起動しようとしましたが、いずれも機能しませんでした。

70
zohair

@Pageディレクティブのコードビハインドファイル名とInheritsプロパティをチェックし、両方が一致することを確認します。

43
CMS

これは古い質問であることはわかっていますが、同様の問題があり、他の人に利益をもたらす可能性がある場合に備えてソリューションを投稿したいと思いました。使用方法の学習中に問題が発生しました:

  • ASP.NET 3.5
  • C#
  • VS2008

AJAX対応のページを作成しようとしていました(これに慣れていない場合は、ScriptManagerオブジェクトの使用に関するチュートリアルをご覧ください)。 C#コードを介してページ内のHTML要素にアクセスしようとしましたが、HTML ID値の識別子が「現在のコンテキストに存在しません」というエラーが表示されました。

それを解決するには、次のことをしなければなりませんでした。

1。サーバーで実行

HTML要素をC#コードの変数としてアクセスするには、aspxファイルのHTML要素タグに次の値を配置する必要があります。

runat="server"

Visual StudioのツールボックスIDEの一部のオブジェクトには、ページに追加されたときにこの値が自動的に含まれません。

2。自動生成されたC#ファイルを再生成します:

  • ソリューションエクスプローラーのaspxファイルの下に、*。aspx.csと* .aspx.designer.csの2つのファイルがあります。デザイナファイルは自動生成されます。
  • 既存の* .aspx.designer.csファイルを削除します。 designerファイルのみを削除してください。もう一方はページのC#コードが含まれているため、削除しないでください。
  • 親aspxファイルを右クリックします。ポップアップメニューで、[Webアプリケーションに変換]を選択します。

これで、C#コードファイルで要素にアクセスできるようになります。

114
RobotNerd

同じ分離コードファイルを参照する他のページ(コピーして貼り付けた古いページなど)を除外します。

33
mosheb

同じ問題がありました。プロジェクトに「MyPage.aspx」と「Copy of MyPage.aspx」の両方があることがわかりました。

13
user735232

また、他のファイルと同じ(部分)クラスを誤って継承または定義しようとするファイルがないことを確認してください。これらのファイルは、実際にエラーが表示されたファイルとは無関係に見えることに注意してください!

3
Protector one

データコンテキストを変更した後、同じエラーが発生します。しかし、私はなじみのないものに遭遇します。ファイルを手動で公開することに慣れました。通常、それを行うと、発行フォルダーにApp_Codeフォルダーが表示されません。 Bu iはVS 12パブリッシングの使用を開始しました。VS12パブリッシングは、Webサーバーへの支援で直接パブリッシュします。そして、プリコンパイルされたアプリケーションに関するエラーが表示されます。それから私はそれが働いていたapp_codeフォルダを削除します。しかし、それから私はあなたが得ているデータコンテキストエラーを与えました。だから私はすべてのファイルを削除し、ファイルの制限なしでパブリッシュを再度実行します(すべてのフォルダとファイルがパブリッシュされます)、それは魅力のように機能しました。

1
Coderx07

WPFエラー以外は、この同じエラーに遭遇しました。私はプロジェクトを再編成し、次のように定義されたコントロールを持っていました。

<local:CustomControl Name="Custom" /> 

私のコードビハインドでは、Custom.Blahを使用しようとしましたが、エラーが発生しました。

The name 'Custom' does not exist in the current context

Xamlのコントロールを次のように変更することは、私にとってのトリックでした。

<local:CustomControl x:Name="Custom" />

これが誰かに役立つことを願っています!

1
Ashley Grenon

私は同じ問題を抱えていた、私の問題は2つの属性の間にスペースがなかった」

AutoGenerateColumns="False"DataKeyNames="ProductID"

の代わりに

AutoGenerateColumns="False" DataKeyNames="ProductID"
1
PersyJack

このエラーは、runat="server"を見逃したときによく発生します。

1
Bashir ahmad

プロジェクトでこれを修正し、現在のファイルをバックアップし(コードが残っているため)、現在のaspx(および子ページ)を削除し、新しいものを作成し、バックアップファイルの内容を新しいファイルにコピーしました。

1
J. Polfer

コントロールにclientidmode = "Static"プロパティが含まれるように、Visual Studio 2010プロジェクトからaspxファイルを再生成しようとしたため、同じ問題が発生しました。これが削除されたときに解決されました。

0
Desmond

上記のソリューションオプション#2は、Webフォームアプリケーションではなく、Web aspxアプリケーションで機能します。 Webアプリケーションで同様のエラーが発生しました。同じ名前のユーザーコントロールを持つファイルを削除することでこれを解決しました。このaspxファイルは実際にはバックアップファイルであり、プロセスのどこでも参照されませんでしたが、それでもエラーが発生しました。バックアップファイルに登録されたユーザーコントロールの名前は、プロセスフローで参照されたaspxファイルとまったく同じ名前でした。そこで、バックアップファイルを削除してソリューションをビルドし、ビルドに成功しました。

これが同様のシナリオで誰かを助けることを願っています。

ヴィジャヤ・ラクシュミ。

0
user1661290

RepeaterをDataListから変換した後に微調整するときに、同様の問題が発生しました。

問題は、不要な属性を削除するときに誤って2つの属性を結合したことです。

<asp:Repeater runat="server" ID="ClientsRP"DataSourceID="ClientsDS">
    .
    .
    .
</asp:Repeater>

また、これにより、デザインファイルでリピーターが生成されなくなりました。

私の場合、Webフォームを作成したとき、WebForm1.aspxおよびそれぞれの名前(WebForm1)という名前が付けられました。手紙、私はそれを何か別のものに改名した。ほぼすべての場所で手動で名前を変更しましたが、デザイナーファイルの1つの場所に「WebForm1」と表示されたままでした。

私もそれを変更し、このエラーを取り除きました。

0
Vikram

私はこの同じ問題に出くわしました。どうやら、BLLのクラスを.aspx/.aspx.csファイルの1つと同じ名前にしないでください。それらは同じスコープなどには含まれないと思っていましたが、Visual Studioの内部動作を台無しにしています。そのタイプのエラーが発生する場合、これを行うことを妨げるものがないことに少し驚いています。とにかく、.aspx/.aspx.csファイルを削除して、プロジェクトを再構築するだけです。次に、別の名前でそれらを戻します。コードをすべて再入力したくない場合は、コードを別のエディターにコピーして貼り付けることができます。

0
GenericJam

同じエラーメッセージが表示されました。私のコードはエラーがなく完璧に動作していたので、戻ってボタンの名前を変更することにしましたが、突然、コントロールが現在のコンテキストに存在しないという青い波線が付いたコンパイルエラーが表示されました...

問題は、aspx.csクラスで作成したバックアップファイルに関連していたため、Visual Studioが愚かだったことが判明しました。それらを削除すると、エラーはなくなりました。

0
user1985189

1)「filename.aspx」ページの<%@ Page CodeFile = "filename.aspx.cs"%>でCodeFileプロパティを確認します。コードビハインドファイル名とこのプロパティ名は同じである必要があります。

2)コードでrunat = "server"を見逃す可能性があります

0