web-dev-qa-db-fra.com

Designer.cs ne met pas à jour lorsque de nouveaux contrôles ajoutés à .aspx

J'ai ajouté un nouveau contrôle à mes fichiers aspx et j'ai constaté que non seulement le nouveau contrôle n'avait pas été ajouté au fichier du concepteur, mais qu'il manquait également quelques autres contrôles ajoutés par d'autres membres de l'équipe. J'ai essayé de supprimer le fichier designer.cs et d'utiliser "Convert to Web Application" sans succès. Certaines autres choses que j'ai essayées ont été d'exclure l'aspx du projet, de le construire, puis de le réinclure sans succès. J'ai également entré manuellement dans un concepteur qui manquait dans le concepteur. Quand j'exécute après, une erreur apparaît, indiquant que le contrôle n'est pas défini, même si c'est le cas, et que je devrais vérifier s'il me manque une directive. 

Le premier contrôle que j'ai ajouté était copier/coller depuis un contrôle similaire et apportait les modifications nécessaires. Mais, j'ai aussi essayé de créer manuellement le contrôle avec les mêmes résultats.

Des idées?

20
user819357

Essaye ça

1.- Remplacez CodeBehind="Name.aspx.cs" par CodeFile ="Name.aspx.cs"

2.- Construire

3.- Remplacez CodeFile ="Name.aspx.cs" par CodeBehind ="Name.aspx.cs"

18

J'ai été victime de ce problème dans mon travail.

Le plus sûr est de régénérer votre fichier .designer.cs, et ici est la solution:

  • Localisez le fichier aspx.designer.cs corrompu dans l'Explorateur de solutions.
  • Supprimez uniquement le fichier designer.cs de votre projet.
  • Cliquez avec le bouton droit sur votre fichier aspx principal et sélectionnez "Convertir en application Web".
14
Jiangong SUN

Fermez Visual Studio, puis supprimez les fichiers ASP.NET temporaires de C:\Windows\Microsoft.Net\Framework\Your_.Net_Version\ProjectName. Supprimez le dossier ProjectName et redémarrez Visual Studio. J'ai eu un problème similaire il y a quelque temps et il a été résolu par ces actions.

Si vous utilisez IIS, vous devrez peut-être arrêter le serveur/site pour pouvoir supprimer les fichiers temporaires.

9
Kenan D

Pour remplacer le fichier de concepteur dans VS 2013:

  1. Supprimer l'ancien fichier * .designer.cs
  2. sélectionnez le fichier * .aspx
  3. Sélectionnez «Convertir en application Web» dans la barre déroulante supérieure de projet.
5
Jake Hunter

Si vous copiez des fichiers aspx et aspx.cs et que vous les renommez, une erreur simple/stupide entraînant également des symptômes similaires consiste à ne pas mettre à jour les références contenues dans le fichier.

Je suis tombé sur cette question en essayant de trouver le répertoire temporaire asp.net, mais cela n'a pas aidé. J'ai alors réalisé que je n'avais pas mis à jour CodeFile="Page.ascx.cs" après avoir copié les fichiers pour créer une nouvelle version modifiée de la page. Ensuite, j’essayais d’ajouter un contrôle et de le référencer dans PageModified.ascx.cs, mais je répétais qu’il n’existait pas.

3
Thymine

J'ai fait ceci dans VS2012:

  1. Ouvrez le fichier page.aspx.designer.cs. Recherchez une déclaration de contrôle du même type de contrôle (c'est-à-dire LinkButton). 
  2. Copiez-le à la fin du fichier (avant la fin de la classe) 
  3. Renommez la variable de contrôle pour qu'elle corresponde au nom de votre contrôle.

C'est tout. 

2
Papa Stahl

Parfois, il peut y avoir des erreurs en HTML, comme deux contrôles ayant le même ID. Soyez également prudent avec les balises div et span. Cela empêche le concepteur d'être mis à jour. Pour tout cela, vérifiez les avertissements dans la liste des erreurs et corrigez-les. Vous êtes prêt à partir. Cela a résolu mon problème.

1
vanitha

Cela semble également se produire lorsque vous avez un contrôle utilisateur qui fait référence à un autre contrôle utilisateur dans le même espace de noms . Si vous déplacez le contrôle utilisateur référencé vers un autre espace de noms, le problème disparaît

1
Leo

J'ai pu résoudre le problème en ajoutant manuellement la déclaration de contrôle à l'intérieur du code derrière le fichier. À chaque fois que j'essayais de régénérer le fichier design.cs, VS 2013 écrivait les mêmes lignes sans le contrôle manquant.

La déclaration doit être ajoutée dans le code situé derrière, PAS dans design.cs, car elle serait supprimée à chaque modification du fichier .aspx.

Ajoutez simplement la déclaration comme vous le feriez pour n'importe quelle autre variable, quelque chose comme ceci:

protected MyNameSpace.MyControl ControlName;
1
f.cipriani

Pour moi, la solution était de:

Mettez votre page en mode Création et cliquez avec le bouton droit de la souris/actualiser. Il va synchroniser les contrôles avec le designer.cs. Assurez-vous que designer.cs est proche avant de faire cela.

La source

0
bombek

Dans mon cas, j'ai dû ajouter l'attribut runat="server" pour reconstruire la solution. Les éléments manquants ont été automatiquement ajoutés au aspx.designer.cs généré et sont disponibles pour être utilisés dans le code

<button runat="server" id="Button01" type="button" class="Button" onclick="location.href='http://http://www.example.com/';">
   <asp:Label runat="server" Text='<%# GetText("Button01")%>'></asp:Label>
</button>
0
Moslem Ben Dhaou

Juste pour ajouter à la liste des solutions possibles: Ces lignes de mon fichier de balisage, bien qu’apparemment valables, étaient apparemment à l’origine d’une déconnexion avec le fichier du concepteur:

<%: Styles.Render("/my-file.css") %>
<%: Scripts.Render("/my-file.js") %>

Je les ai simplement commentés, sauvegardés et le fichier conçu a commencé à fonctionner correctement. J'ai ensuite commenté les deux lignes, enregistré et pu ajouter de nouveaux contrôles à la page sans problème. J'ai trouvé cela étrange et la cause initiale du problème n'est toujours pas claire. Je ne peux que spéculer sur le fait qu'il s'agit d'un bogue de Visual Studio.

Le problème peut être causé par un code parfaitement valide. Dans ce cas, une solution possible consisterait à commenter les sections HTML dans votre fichier de balisage jusqu'à ce que le fichier de concepteur se résolve lui-même, puis vous pourrez annuler toutes vos observations. reprendre le travail comme d'habitude.

0
StronglyTyped