2009-04-01 17 views
67

Ho un'applicazione Web su cui sto lavorando (ASP.NET2.0 con C#, utilizzando VS2005). Tutto stava funzionando benissimo, e tutto ad un tratto ho l'errore:Il nome 'controlname' non esiste nel contesto corrente

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

e 43 altri del genere per ogni volta che ho usato un controllo nel mio codebehind della pagina.

Ciò accade solo per 1 pagina. Ed è come se il codebehind non riconoscesse i controlli. Un'altra cosa interessante è che l'intellisense non sta rilevando nessuno dei controlli.

Ho provato a pulire il file della soluzione, eliminare il file obj, escludere i file dal progetto e quindi riaggiungerli, chiudere VS e riavviarlo, e anche riavviare il mio computer, ma nessuno di questi ha funzionato.

+2

La risposta giusta è nella risposta trovata qui: http://stackoverflow.com/a/1981228/168703 – JonH

+0

Controllare anche lo spazio dei nomi in designer.cs a volte dopo aver rinominato una pagina aspx la namesapce viene semplicemente rimossa da il designer.cs. –

risposta

38

Controllare il codice dietro il nome del file e la proprietà Inherits nella direttiva @Page, assicurarsi che entrambi corrispondano.

+0

Questo ha fatto il trucco anche per me! Uno spazio dei nomi era sbagliato e quando l'ho corretto nella direttiva @Page, gli errori sono andati via. –

33

esclude qualsiasi altra pagina che faccia riferimento allo stesso file code-behind, ad esempio una pagina precedente che è stata copiata e incollata.

+0

o copia l'elemento "Etichetta1" in quell'altra pagina. – mathijsuitmegen

+0

Risolto per me! – AskYous

112

So che questa è una domanda vecchia, ma ho avuto un problema simile e volevo pubblicare la mia soluzione nel caso in cui potesse giovare a qualcun altro. Ho incontrato il problema, mentre l'apprendimento da utilizzare:

  • ASP.NET 3.5
  • C#
  • VS2008

stavo cercando di creare una pagina AJAX-enabled (guardare in un tutorial su come utilizzare l'oggetto ScriptManager se non si ha familiarità con questo). Ho provato ad accedere agli elementi HTML nella pagina tramite il codice C# e ricevevo un errore che indicava che l'identificatore per il valore dell'ID HTML "non esiste nel contesto corrente".

Per risolverlo, ho dovuto effettuare le seguenti operazioni:

1. Eseguire sul server di

Per accedere l'elemento HTML come una variabile nel codice C#, il valore seguente deve essere posto in il tag elemento HTML nel file aspx:

runat="server" 

Alcuni oggetti nella casella degli strumenti in Visual Studio non includono automaticamente questo valore quando aggiunto alla pagina.

2. Rigenera il C# file di auto-generata:

  • In Esplora soluzioni, sotto il file aspx non ci dovrebbero essere due file: * .aspx.cs e * .aspx.designer.cs . Il file del designer è generato automaticamente.
  • Elimina il file * .aspx.designer.cs esistente. Assicurati di eliminare solo il file designer. Non eliminare l'altro, perché contiene il codice C# per la pagina.
  • Fare clic con il tasto destro del mouse sul file genitore aspx.Nel menu a comparsa, selezionare Convertire nell'applicazione Web.

Ora l'elemento deve essere accessibile nel file di codice C#.

+2

fyi con il pulsante destro del mouse l'opzione "Converti in applicazione Web" è disponibile anche su cartelle e progetti. –

+9

l'opzione numero 2 è stata la risposta perfetta per me nel risolvere questo problema quando ci stavo correndo oggi! – MikeScott8

+0

Non so perché funzioni, ma ha funzionato per me. – wootscootinboogie

3

Inoltre, assicurarsi di non avere file che accidentalmente provino ad ereditare o definire la stessa classe (parziale) degli altri file. Si noti che questi file possono sembrare estranei ai file in cui è apparso effettivamente l'errore!

12

Ho avuto lo stesso problema. Si scopre che ho avuto sia "MyPage.aspx" e "Copia di MyPage.aspx" nel mio progetto.

1

Mi sono imbattuto in questo stesso errore, tranne che si trattava di un errore WPF. Stavo riordinando progetti e ha avuto un controllo definito in questo modo:

<local:CustomControl Name="Custom" /> 

Nel mio codice dietro Ho provato ad utilizzare Custom.Blah, ma ho avuto l'errore:

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

Che cosa ha fatto il trucco per me stava cambiando il mio controllo in Xaml a questo:

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

Spero che questo aiuti qualcuno là fuori!

0

L'opzione di soluzione n. 2 offerta sopra funziona per le applicazioni Windows Form e non per l'applicazione Web ASPX. Ho ottenuto un errore simile nell'applicazione web, ho risolto questo eliminando un file in cui avevo un controllo utente con lo stesso nome, questo file aspx era in realtà un file di backup e non è stato referenziato in alcun punto del processo, ma ha causato l'errore perché il nome del controllo utente registrato sul file di backup è stato identificato esattamente come nel file aspx a cui è stato fatto riferimento nel flusso di processo. Così ho cancellato il file di backup e costruito la soluzione, compilato con successo.

Spero che questo aiuti qualcuno in uno scenario simile.

Vijaya Laxmi.

0

Ho avuto lo stesso problema dal momento che stavo cercando di produrre il file aspx da un progetto di Visual Studio 2010 in modo che i controlli avessero la proprietà clientidmode = "Statico". Quando viene rimosso, è stato risolto.

0

Ho avuto un problema simile durante la modifica con un ripetitore dopo averlo convertito da una DataList.

Il problema era che ho unito per errore 2 attributi quando elimina uno non necessario.

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

E questo ha impedito la generazione del ripetitore nel file di progettazione.

0

Ho avuto lo stesso messaggio di errore. Il mio codice era privo di errori e funzionava perfettamente, quindi ho deciso di tornare indietro e rinominare uno dei miei pulsanti e improvvisamente mi sta dando un errore di compilazione accompagnato da quella sottolineatura blu ondulata che dice che il controllo non esiste nel contesto corrente ...

Si scopre che Visual Studio era stupido, poiché il problema era correlato ai file di backup che avevo creato con la mia classe aspx.cs. Ho cancellato quelli e gli errori sono andati via.

1

Ottengo lo stesso errore dopo aver apportato modifiche con il mio contesto dati. Ma incontro qualcosa che non mi è familiare. Mi sono abituato a pubblicare i miei file manualmente. Normalmente, quando lo faccio, non appare alcuna cartella App_Code nella cartella di pubblicazione.Ho iniziato a utilizzare la pubblicazione VS 12 che pubblica direttamente con la tua assistenza al server web. E poi ho l'errore di essere un'applicazione precompilata. Poi ho cancellato la cartella app_code che ha funzionato. Ma poi mi ha dato l'errore di Data Context che stai ottenendo. Così ho appena cancellato tutti i file ed eseguito di nuovo la pubblicazione senza restrizioni sui file (ogni file della cartella & verrà pubblicato), quindi ha funzionato come un incantesimo.

0

Mi sono imbattuto in questo stesso problema. Apparentemente, non dovresti chiamare una classe nella BLL con lo stesso nome di uno dei file .aspx/.aspx.cs. Ho pensato che non sarebbero stati nello stesso ambito, ecc., Ma ha incasinato troppo il funzionamento interno di Visual Studio. Sono un po 'sorpreso che non ci sia qualcosa che ti impedisca di farlo se produrrà quel tipo di errore. Ad ogni modo, basta eliminare i file .aspx/.aspx.cs e ricostruire il progetto. Quindi riportali sotto con un altro nome. È possibile copiare/incollare il codice in un altro editor se non si desidera ridigitare il tutto nuovamente.

0

Nel mio caso, quando ho creato il modulo Web, è stato denominato WebForm1.aspx e rispettivi nomi (WebForm1). Lettera, l'ho ribattezzato con qualcos'altro. Ho rinominato manualmente in quasi tutti i luoghi, ma un posto nel file del designer lo stava ancora mostrando come "WebForm1".

Ho modificato anche questo e mi sono liberato di questo errore.

1

Ho avuto lo stesso problema, il mio problema è stato non avere spazio tra due attributi"

AutoGenerateColumns="False"DataKeyNames="ProductID" 

invece di

AutoGenerateColumns="False" DataKeyNames="ProductID" 
0

Ho fissato questo nel mio progetto per il backup dei file correnti (così Avevo ancora il mio codice), cancellando l'attuale aspx (e le pagine figlio), facendone uno nuovo e copiando il contenuto dei file di backup nei nuovi file.

1

questo errore si verifica spesso quando si non perdere il runat="server".

Problemi correlati