Les contrôles ASP.NET ne peuvent pas être référencés dans code-behind dans Visual Studio 2008

Ok, mon studio visuel est cassé. Je ne le dis PAS prématurément, car c’était ma première réponse pour voir où j’avais foiré dans mon code. Lorsque j’ajoute des contrôles à la page, je ne peux pas tous les référencer dans le code situé derrière. Certains d’entre eux je peux, il semble que les premiers que j’ai mis sur une page fonctionnent, alors ça s’arrête.

J’ai d’abord pensé que c’était peut-être le type de contrôle car au départ j’essayais de référencer un répéteur dans un panneau de mise à jour. Je sais que je fais correctement référence au code derrière dans ma page aspx. Mais juste au cas où ce serait une erreur de ma part, j’ai commencé à recréer la page à partir de zéro et cette fois, j’ai eu quelques contrôles de plus en moins avant que VS ne cesse de reconnaître mes contrôles.

Après avoir créé ma page deux fois et être bloqué, j’ai pensé que c’était peut-être encore le type de contrôle. J’ai créé une nouvelle page et jeté quelques étiquettes dessus. Aucun dé, la construction échoue lors de la référence au contrôle à partir du code précédent.

Dans une note peut-être sans rapport lorsque je bascule vers le redouté mode “conception” des pages ASPX VS 2008 erreurs sur et redémarre.

J’ai déjà mis un ticket d’incident à Microsoft. J’ai désinstallé tous les compléments, j’ai réinstallé Visual Studio.

Quiconque veut voir mon code demande simplement, mais j’utilise le studio visuel directement WYSIWYG “nouvelle page aspx”, rien d’extraordinaire.

Je doute que quelqu’un se soit heurté à cela, mais vous aussi?

Quelqu’un at-il eu du mal à tirer ces choses avec Microsoft? N’importe quel moyen d’expédier ce billet sans payer ??? Cela fait des jours que je parle à un représentant de Microsoft sans succès et je suis mort dans l’eau.


Jon Limjap: J’ai modifié le titre de manière à le rendre clair et descriptif et à faire en sorte que personne ne le considère comme offensant. “Foo-barré” ne constitue pas exactement un titre de question, bien que votre question soit clairement valide.

essayez d’effacer votre cache VS local. trouvez votre projet et supprimez le dossier. le dossier est créé par VS pour quelle raison je ne comprends honnêtement pas. mais j’ai eu plusieurs occasions où le nettoyer et reconstruire corrigent des choses … espérons que c’est tout ce dont vous avez besoin également.

ici

%Temp%\VWDWebCache 

et peut-être ici

 %LocalAppData%\Microsoft\WebsiteCache 

La correction ci-dessus (suppression des fichiers temporaires) ne fonctionnait pas pour moi. Je devais supprimer le fichier PageName.aspx.designer.cs , puis faire un clic droit sur ma page et choisir “Convertir en application Web” dans le menu contextuel.

Lorsque Visual Studio a tenté de reconstruire le fichier de concepteur, il a rencontré (et m’a révélé) la source du problème. Dans mon cas, VS avait perdu une référence à une DLL requirejse par l’un des contrôles de ma page. J’ai donc dû nettoyer les dossiers bin générés dans mon projet.

Le contrôle que vous essayez de référencer est-il à l’intérieur du répéteur?

Si c’est le cas, vous devez les rechercher à l’aide de la méthode FindControl.

Par exemple pour:

   stest   

Vous devez faire ceci pour le référencer:

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

Dans mon cas, je travaillais avec un ancien code de site Web, que j’ai converti en une solution VS2008. J’ai rencontré le même problème.

Pour moi, le correctif consistait à cliquer avec le bouton droit de la souris sur le projet Sites Web dans l’Explorateur de solutions et à sélectionner Convertir en application Web. Cela a créé des fichiers designer.cs pour toutes les pages, qui n’avaient pas encore ces fichiers auparavant.

vous trouverez également des fichiers temporaires .net pouvant être supprimés en toute sécurité ici: Fichiers ASP.NET C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary

J’ai observé que cela se produit à cause d’un fichier .designer.cs manquant. Suite à la résolution de ce problème dans mon cas (en gros, j’avais copié ces fichiers d’un projet Web VS 2005 vers un projet VS 2010): Cliquez avec le bouton droit sur le fichier .aspx et sélectionnez le menu “Convertir en site Web”. Le fichier .designer.cs sera créé. alors cela devrait fonctionner fichier.

Dans mon cas, les nouveaux contrôles asp ajoutés à un existant n’étaient pas détectés.

Ce qui a fonctionné pour moi a été de forcer une recompilation en renommant un contrôle existant pour casser la construction, par exemple: changer en

Lorsque j’ai corrigé l’ID et reconstruit un nouveau fichier de concepteur a été généré avec l’ID corrigé et de nouveaux contrôles.

nous ne pouvons pas changer le code lorsque l’application est en cours d’exécution. Pour ce faire, cliquez d’abord sur le bouton d’arrêt situé en haut de l’écran, ce qui arrêtera votre application. Cliquez à présent sur le bouton en mode Création pour insérer le code dans le fichier .aspx.cs, puis écrivez le code dedans

Vérifiez votre fichier aspx sur les erreurs, une fois que j’ai fait face à ce problème

Cela m’est arrivé plusieurs fois et c’est arrivé encore aujourd’hui pour une nouvelle raison. J’exécute normalement mon projet via IIS, mais je devais l’exécuter localement pour le débogage. J’exécute normalement sur le port 80 dans IIS et le port 81 dans le débogage, mais certains parameters du moteur web.config en utilisaient 80, alors je venais de tuer le site dans IIS et de basculer le site Web sur le port 80 dans les parameters du projet. Pour une raison quelconque, cela a tout gâché et créé le problème décrit dans le PO. J’ai commencé à essayer les choses une par une, y compris tous les conseils mentionnés ici, mais la remise du port à 81 dans les parameters du projet est ce qui a finalement fonctionné.

Pour moi, supprimer / renommer les fichiers à l’emplacement suivant a fonctionné:

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

Faites un clic droit sur le nom du projet et sélectionnez “Nettoyer”. Ensuite, vérifiez si votre dossier bin contient des dll. si c’est le cas, supprimez-le. c’est tout. Il suffit de reconstruire et tout ira bien.

Juste pour append mes deux cents avec ce problème.

La seule chose de tout ce qui précède qui a fonctionné pour moi a été le “Nettoyer” et ensuite supprimer tout ce qui rest dans le dossier bin. Reconstruisez et tous les contrôles ont alors commencé à fonctionner.

FYI … J’avais aussi ce problème et j’ai finalement résolu le problème en supprimant le fichier .designer.vb existant, en cliquant avec le bouton droit de la souris sur le projet et en choisissant Convertir en application Web. Il a ensuite montré la véritable “erreur” à l’origine de la merde de l’interface graphique. En fait, j’avais utilisé le même nom pour 2 autres étiquettes, mais cela n’apparaissait pas dans la fenêtre de la liste des erreurs. Une fois, j’ai renommé l’un des 2 autres labels, il s’est bien construit et a cessé de me causer des ennuis.

Cela peut également se produire si la propriété Inherits sur la page source ne correspond pas au nom de la classe dans le code situé derrière. En règle générale, cela ne se produira probablement que si vous copiez / collez un fichier .ascx / .aspx et oubliez de le mettre à jour.

Exemple:

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

Le code derrière la classe:

 Partial Public Class myControl 

Vous devez append

 runat="server" 

à chaque élément de votre page.