92 votes

Le nom 'ViewBag' n'existe pas dans le contexte actuel.

J'essaie d'utiliser ViewBag dans mon application, j'ai toutes les dlls récentes, la dernière version de MVC 3, mais je reçois toujours l'erreur :

"Le nom 'ViewBag' n'existe pas dans le contexte actuel".

J'ai même désinstallé puis réinstallé MVC 3 et pourtant il n'y a aucun changement.

De plus, je ne pense pas que les fichiers DLL apparaissent dans le GAC.

Quel pourrait être mon problème ? Ou comment ajouter les dll au GAC ?

1 votes

Gardez à l'esprit que, pour la version 5.2.2.0, le web.config doit pointer vers la version 5.2.2.0, mais que le Views/web.config doit pointer vers la version 5.1.0.0 pour l'assemblage MVC.

1voto

Champ Points 266

Après avoir essayé toutes les approches, aucune d'entre elles n'a fonctionné pour moi, puisque je n'ai que des configurations correctes. enfin

La suppression de tous les fichiers de "temp" et "%temp%" du système a permis de résoudre ce problème.

Ouvrez la commande Exécuter (Windows+R) et tapez les chaînes ci-dessus et supprimez tous les fichiers temporaires.

0 votes

Merci ! Après avoir tout essayé, ceci a fonctionné pour moi.

1voto

Naga Sailesh Points 686

Si vous avez essayé toutes les réponses disponibles et que vous ne trouvez toujours pas la réponse, cela pourrait résoudre le problème. Si vous avez différentes configurations de solutions comme Debug, Release, etc. alors définissez le chemin de sortie du projet sur 'bin' et compilez le projet. Annulez le changement après la compilation.

Project Output Path

VS recherche les dlls dans le dossier bin

1voto

Dave Points 3173

J'avais déjà essayé de supprimer le fichier bin et obj et de redémarrer VS, sans succès.

J'ai également eu ce problème à de nombreuses reprises et c'est à chaque fois un casse-tête à résoudre. Souvent, c'est dû au fait que le fichier web.config n'a pas la bonne version de l'une des références. Cela signifie qu'il faut cliquer sur la référence dans Visual Studio pour voir la version dans l'onglet des propriétés, puis la faire correspondre à la version dans les fichiers web.config.

Une autre solution consiste (si possible) à mettre à niveau vers une version plus récente de .net framework, puis à supprimer les fichiers bin/obj et à redémarrer Visual Studio. Je ne peux que supposer qu'il s'agit de modifier quelque chose dans le fichier

Une vérification rapide de la différence entre le fichier csproj ne montre pas vraiment de différence majeure... Mais les différences qu'il montre sont (j'ai ajouté (enlevé) pour montrer l'ancienne ligne)

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> (remove)
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>(remove)
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>

Dans le fichier Web.Config (pas celui de la vue)

<add key="webpages:Version" value="2.0.0.0" /> (remove)
<add key="webpages:Version" value="3.0.0.0"/>

Il a également ajouté (au même fichier web.config) mais je l'ai supprimé manuellement

 <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>

Enfin, dans la console du gestionnaire de paquets, ajoutez update-package

Exécuter le site web localement et voir les éventuelles erreurs de compilation, ce qui a été corrigé par mon deuxième paragraphe (faire correspondre les versions des références).

0voto

user1412699 Points 1435

J'ai mis à jour webpages:Version dans le dossier ./Views/Web.Config mais ce paramètre était également présent dans web.config dans Root. Mettez à jour les deux ou supprimez le web.config de Root.

0voto

Developer Points 243

Comme @Wilson Vallecilla l'a déjà mentionné. Veuillez suivre les étapes ci-dessous pour supprimer le cache :

Veuillez suivre le chemin ci-dessous pour découvrir les fichiers :

C:\Users\your.name.here\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache

Supprimez les quatre fichiers :

  • Microsoft.VisualStudio.Default.cache
  • Catalogues Microsoft.VisualStudio.Default.
  • Microsoft.VisualStudio.Default.err
  • Microsoft.VisualStudio.Default.external

J'ai fermé mon projet, supprimé les fichiers sur ce chemin et rouvert mon projet, nettoyé la solution et construit à nouveau et le problème a été résolu.

La suppression de vos fichiers temporaires ASP.NET est également utile. C:\Users\your.name.here\AppData\Local\Temp\Temporary ASP.NET Files.

Cela fonctionne pour moi.

Merci !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X