2008-09-02 28 views
31

Ok, mi estudio visual está roto. Digo esto NO prematuramente, ya que fue mi primera respuesta para ver dónde había metido la pata en mi código. Cuando agrego controles a la página, no puedo hacer referencia a todos ellos en el código subyacente. Algunos de ellos puedo, parece que los primeros que pongo en una página funcionan, luego simplemente se detiene.Los controles ASP.NET no pueden referenciarse en código subyacente en Visual Studio 2008

Primero pensé que podría ser el tipo de control ya que inicialmente estaba tratando de hacer referencia a un repetidor dentro de un panel de actualización. Sé que estoy haciendo referencia al código detrás en mi página aspx. Pero en caso de que fuera un error de mi parte, comencé a recrear la página desde cero y esta vez obtuve algunos controles más antes de que VS dejara de reconocer mis controles.

Después de crear mi página dos veces y atascarme, pensé que tal vez todavía era el tipo de controles. Creé una nueva página y simplemente lancé algunas etiquetas sobre ella. Sin dados, la compilación falla al hacer referencia al control desde el código subyacente.

En una nota posiblemente no relacionada cuando cambio al temido modo de "diseño" de las páginas aspx VS 2008 se produce un error y se reinicia.

Ya he puesto un boleto de problemas en Microsoft. Desinstalé todos los complementos, reinstalé Visual Studio.

Cualquiera que quiera ver mi código solo pregunte, pero estoy usando el directo estudio visual WYSIWYG "nueva página aspx" nada lujoso.

Dudo que alguien haya topado con esto, ¿pero usted?

¿Alguien ha tenido éxito al solucionar estos problemas con Microsoft? ¿Alguna forma de agilizar este boleto sin pagar? He estado hablando con un representante de Microsoft durante días sin suerte todavía y estoy muerto en el agua.


Jon Limjap: he editado el título a la vez que quede claro y descriptivo y asegurarse de que nadie lo ve como ofensivo. "Foo-barrado" no constituye exactamente un título de pregunta apropiado, aunque su pregunta es claramente válida.

Respuesta

15

intentar borrar la memoria caché local de VS. encuentra tu proyecto y elimina la carpeta. la carpeta es creada por VS por qué razón honestamente no entiendo. pero he tenido varias ocasiones en las que limpiarlo y reconstruirlo soluciona las cosas ... espero que esto sea todo lo que necesitas también.

aquí

%Temp%\VWDWebCache 

y posiblemente aquí

%LocalAppData%\Microsoft\WebsiteCache 
+0

¿Sabes dónde está este caché en Vista? –

+0

lo siento, no. Instalé Vista una vez y luego volví a XP. Intenta hacer solo una búsqueda de carpeta para VWDWebCache o WebsiteCache y mira si puedes encontrarla. Si es así, agregue otro comentario o una respuesta. –

+4

No funcionó para mí:/ – SearchForKnowledge

11

¿El control que está tratando de hacer referencia dentro del repetidor es el control?

Si es así, debe buscarlos utilizando el método FindControl.

Por ejemplo para:

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <asp:LinkButton ID="LinkButton1" runat="server">stest</asp:LinkButton> 
    </ItemTemplate> 
</asp:Repeater> 

Usted tendría que hacer esto para hacer referencia a ella:

LinkButton lb = Repeater1.FindControl("LinkButton1"); 
+0

<3 gracias, he intentado convertir a aplicaciones web y todo tipo de cosas. –

3

también puede encontrar.net temp archivos que son seguros para eliminar aquí: C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Archivos temporales ASP.NET

32

La corrección anterior (eliminar los archivos temporales) no funcionó para mí. Tuve que eliminar el archivo PageName.aspx.designer.cs, luego hacer clic derecho en mi página y elegir "Convertir a aplicación web" en el menú contextual.

Cuando Visual Studio intentó reconstruir el archivo de diseñador, encontró (y me reveló) el origen del problema. En mi caso, VS había perdido una referencia a una DLL que necesitaba uno de los controles en mi página, así que tuve que limpiar las carpetas bin generadas en mi proyecto.

+0

+1. Cada vez que me encuentro con un problema como este siempre se reduce a un problema en el archivo de diseño generado automáticamente. Realizar estos pasos trae el error a la luz. – NotMe

+0

+1 - exactamente el mismo problema, solución perfecta –

+4

Si no puede encontrar la opción Convertir a la aplicación web: http://stackoverflow.com/questions/19561982/visual-studio-2013-missing-convert-to-web- aplicación –

7

En mi caso, estaba trabajando con un viejo código de sitio web, que convertí a una solución VS2008. Me encontré con este mismo problema.

Para mí, la solución era hacer clic con el botón derecho en el proyecto de sitios web en el Explorador de soluciones y seleccionar Convertir a aplicación web. Esto creó designer.cs archivos para todas las páginas, que aún no tenían estos archivos antes.

2

En mi caso, no se detectaron los nuevos controles asp que agregué a un existente.

Lo que funcionó para mí estaba forzando una recompilación cambiando el nombre de un control existente para romper la acumulación por ejemplo: cambiar <asp:TextBox ID="txtTitle" runat="server" /> a <asp:TextBox ID="txtTitle2" runat="server" />

Cuando corregí el ID y reconstruido un nuevo archivo del diseñador fue generado con el ID corregido y nueva controles.

+0

Las otras soluciones no funcionaron para mí. Este lo hizo. ¡Gracias! – killerbarney

0

Para mí, borrar/cambiar el nombre de los archivos en la siguiente ubicación trabajaron:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\myvirtualwebsite\e331e0a9 
3

observé esto sucede debido a la falta de archivos .designer.cs. Después de solucionar este problema en mi caso (básicamente copié estos archivos del proyecto web VS 2005 al proyecto VS 2010): Haga clic con el botón derecho en el archivo .aspx y seleccione el menú "Convertir al sitio web", esto creará el archivo .designer.cs y entonces debería funcionar el archivo.

0

retirar de su aspx de errores, una vez que me he enfrentado con el problema de que

0

me había ocurrido esto unas cuantas veces y volvió a suceder hoy para una nueva razón. Normalmente ejecuto mi proyecto a través de IIS, pero necesito ejecutarlo localmente para depurarlo. Normalmente corro en el puerto 80 en IIS y 81 en depuración, pero tenía algunas configuraciones en el archivo web.config que usaba 80, así que simplemente eliminé el sitio en IIS y cambié el sitio web al puerto 80 en la configuración del proyecto. Por alguna razón, esto arruinó todo y creó el problema descrito en el PO. Empecé a probar cosas una a una, incluyendo todos los consejos mencionados aquí, pero cambiar el puerto a 81 en la configuración del proyecto es lo que terminó funcionando.

0

haga clic derecho en el nombre del proyecto y seleccione "Limpiar". luego, revisa tu carpeta bin si le queda alguna dll. si es así, elimínelo. Eso es. solo reconstruye y todo funcionará bien.

0

Solo para agregar mis dos centavos con este problema.

Lo único que me ha funcionado es "Limpiar" y luego eliminar todo lo que queda en la carpeta bin. Rebuild y todos los controles comenzaron a funcionar en ese momento.

0

FYI ... Estaba teniendo este problema también y terminé solucionándolo eliminando el archivo .designer.vb existente, haciendo clic derecho en el proyecto y seleccionando Convert to Web Application. Luego mostró el verdadero "error" que causaba que la GUI se cagara.Resultó que había usado el mismo nombre para otras 2 etiquetas, pero eso no se mostraba en la ventana de la lista de errores. Una vez que cambié el nombre de una de las otras dos etiquetas, funcionó bien y dejó de darme problemas.

0

Esto también puede ocurrir si la propiedad Inherits en la página de origen no coincide con el nombre de la clase en el código detrás. En términos generales, esto probablemente solo suceda si copia/pega un archivo .ascx/.aspx y olvida actualizarlo.

Ejemplo:

<%@ Control AutoEventWireup="false" CodeBehind="myControl.ascx.vb" Inherits="myProject.myWrongControl" %> 

El código detrás de la clase:

Partial Public Class myControl 
0

hay que añadir

runat="server" 

a cada elemento en su página.

+0

Gracias! ¡Funcionó para mí! – qjnr

1

no podemos cambiar el código cuando la aplicación se está ejecutando. Para hacerlo, primero haga clic en el botón de detención en la parte superior que detendrá su aplicación. Ahora haga clic en el botón en modo diseño, insertará el código en .aspx archivo .cs, luego escriba el código en él

Cuestiones relacionadas