2009-04-01 21 views
67

Tengo una aplicación web en la que estoy trabajando (ASP.NET2.0 con C#, usando VS2005). Todo estaba funcionando bien, y de repente me sale el error:El nombre 'controlname' no existe en el contexto actual

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

y 43 otros de la especie por cada vez que he usado un control en mi código subyacente de la página.

Esto solo ocurre en 1 página. Y es como si el código subyacente no reconociera los controles. Otra cosa interesante es que el Intellisense no está recogiendo ninguno de los controles tampoco ...

He intentado limpiar el archivo de solución, eliminar el archivo obj, excluir los archivos del proyecto y luego volver a agregarlos, cerrar VS y reinícielo, e incluso reinicie mi computadora, pero ninguno de estos ha funcionado.

+2

La respuesta correcta a esto es en la respuesta que se encuentra aquí: http://stackoverflow.com/a/1981228/168703 – JonH

+0

También verifique el espacio de nombres en el designer.cs algunas veces después de renombrar una página aspx, el nombre se borra simplemente de el designer.cs. –

Respuesta

38

Compruebe su código detrás del nombre del archivo y hereda la propiedad en la directiva @Page, asegúrese de que ambos coincidan.

+0

¡Eso fue lo que hizo el truco para mí también! Un espacio de nombres era incorrecto y cuando lo corregí en la directiva @Page, poof los errores desaparecieron. –

33

excluyen cualquier otra página que haga referencia al mismo archivo de código subyacente, por ejemplo, una página anterior que copió y pegó.

+0

o copie el elemento 'Etiqueta1' a esa otra página. – mathijsuitmegen

+0

¡Lo resolvió para mí! – AskYous

112

Sé que esta es una pregunta anterior, pero tuve un problema similar y quería publicar mi solución en caso de que pudiera beneficiar a otra persona. Me encontré con el problema, mientras que aprender a utilizar:

  • ASP.NET 3.5
  • C#
  • VS2008

yo estaba tratando de crear una página para AJAX (mirar en un tutorial sobre el uso el objeto ScriptManager si no está familiarizado con esto). Traté de acceder a los elementos HTML en la página a través del código C# y recibí un error que indicaba que el identificador para el valor de ID HTML "no existe en el contexto actual".

Para resolverlo, he tenido que hacer lo siguiente:

1. Ejecutar en el servidor de

Para acceder al elemento HTML como una variable en el código C#, el siguiente valor debe ser colocado en la etiqueta de elemento HTML en el archivo aspx:

runat="server" 

Algunos objetos en la caja de herramientas en el IDE de Visual Studio no incluyen automáticamente este valor cuando se añade a la página.

2. Regenerar el C# archivo generado automáticamente:

  • En el Explorador de soluciones, bajo el aspx no debe haber dos archivos: * * .aspx.cs y aspx.designer.cs . El archivo de diseñador se genera automáticamente.
  • Elimine el archivo * .aspx.designer.cs existente. Asegúrese de eliminar solo el archivo . No elimine el otro, porque contiene su código C# para la página.
  • Haga clic derecho en el archivo aspx principal.En el menú emergente, seleccione Convertir a la aplicación web.

Ahora el elemento debe estar accesible en el archivo de código C#.

+2

si hace clic derecho en la opción "Convertir a aplicación web" también está disponible en carpetas y proyectos. –

+9

¡la opción número 2 fue la respuesta perfecta para mí al resolver este problema cuando me encontré con esto hoy! – MikeScott8

+0

No sé por qué funciona esto, pero funcionó para mí. – wootscootinboogie

3

Además, asegúrese de no tener archivos que intenten accidentalmente heredar o definir la misma clase (parcial) que otros archivos. Tenga en cuenta que estos archivos pueden parecer ajenos a los archivos donde apareció realmente el error.

12

Tuve el mismo problema. Resultó que tenía tanto "MyPage.aspx" como "Copy of MyPage.aspx" en mi proyecto.

1

Me encontré con este mismo error, excepto que era un error de WPF. Estaba reorganizando proyectos y había un control definido en este aspecto:

<local:CustomControl Name="Custom" /> 

En mi código detrás Intenté usar Custom.Blah, pero tengo el error:

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

Lo que hizo el truco para mí estaba cambiando mi control en XAML a esto:

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

Espero que esto ayude a alguien por ahí!

0

La opción de solución n. ° 2 ofrecida anteriormente funciona para aplicaciones de formularios de Windows y no para aplicaciones web aspx. Obtuve un error similar en la aplicación web, resolví esto al eliminar un archivo donde tenía un control de usuario con el mismo nombre, este archivo aspx era en realidad un archivo de copia de seguridad y no se hacía referencia en ningún lugar del proceso, pero aún así causaba el error porque el nombre del control de usuario registrado en el archivo de copia de seguridad se denominó exactamente igual en el archivo aspx al que se hizo referencia en el flujo del proceso. Así que eliminé el archivo de copia de seguridad y la solución creada, la creación se realizó correctamente.

Espero que esto ayude a alguien en un escenario similar.

Vijaya Laxmi.

0

Tuve el mismo problema ya que estaba tratando de volver a producir el archivo aspx de un proyecto visual studio 2010 por lo que los controles tenían la propiedad clientidmode = "Static". Cuando esto se elimina, se resuelve.

0

Tuve un problema similar cuando retoqué con un repetidor después de convertirlo de una lista de datos.

El problema fue que accidentalmente uní 2 atributos cuando eliminé uno innecesario.

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

Y esto impidió la generación del repetidor en el archivo de diseño.

0

Tuve el mismo mensaje de error. Mi código no tenía errores y funcionaba perfectamente, luego decidí volver y cambiar el nombre de uno de mis botones y de repente me dio un error de compilación acompañado de ese subrayado ondulante azul que decía que el control no existe en el contexto actual ...

Resulta que Visual Studio estaba siendo tonto, ya que el problema estaba relacionado con los archivos de copia de seguridad que había hecho de mi clase aspx.cs. Los eliminé y los errores desaparecieron.

1

Me sale el mismo error después de hacer cambios con mi contexto de datos. Pero encuentro algo con lo que no estoy familiarizado. Me acostumbro a publicar mis archivos de forma manual. Normalmente, cuando lo hago, no aparece la carpeta App_Code en la carpeta de publicación.Bu, comencé a utilizar la publicación VS 12, que publica directamente con su ayuda al servidor web. Y luego me aparece el error de ser una aplicación precompilada. Luego borro la carpeta app_code que funcionó. Pero luego me dio el error de contexto de datos que está recibiendo. Así que acabo de eliminar todos los archivos y ejecutar la publicación de nuevo sin restricciones de archivos (se publicará cada archivo &) y luego funcionó como un amuleto.

0

Me encontré con este mismo problema. Aparentemente, no debe llamar a una clase en el BLL el mismo nombre que uno de los archivos .aspx/.aspx.cs. Pensé que no estarían en el mismo ámbito, etc. pero se metió demasiado con el funcionamiento interno de Visual Studio. Estoy un poco sorprendido de que no haya algo que te impida hacer esto si va a producir ese tipo de error. De todos modos, simplemente elimine los archivos .aspx/.aspx.cs y reconstruya su proyecto. Luego tráigalos con otro nombre. Puede copiar/pegar su código en otro editor si no quiere volver a escribirlo todo.

0

En mi caso, cuando creé el formulario web, recibí el nombre de WebForm1.aspx y sus nombres respectivos (WebForm1)) Carta, renombré eso a algo más. Cambié el nombre manualmente en casi todos los lugares, pero un lugar en el archivo del diseñador todavía lo mostraba como 'WebForm1'.

Lo cambié también y me deshice de este error.

1

que tenían el mismo problema, mi problema fue no tener espacio entre dos atributos"

AutoGenerateColumns="False"DataKeyNames="ProductID" 

en lugar de

AutoGenerateColumns="False" DataKeyNames="ProductID" 
0

Fijé esto en mi proyecto de copia de seguridad de los archivos actuales (por lo Todavía tenía mi código), eliminando el aspx actual (y las páginas secundarias), creando uno nuevo y copiando el contenido de los archivos de copia de seguridad en los nuevos archivos.

1

Este error suele ocurrir cuando y O señorita runat="server".

Cuestiones relacionadas