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.

3voto

JJP Points 73

J'ai eu le même problème et crimbo m'a donné le bon indice, il était causé par le fichier ./Views/Web.config qui était présent mais ne contenait pas les bons espaces de noms je suppose....

J'ai créé un projet MVC5 vierge et importé son ./Views/Web.config dans mon projet existant et les vagues rouges sous chaque utilisation de ViewBag ont disparu !

0 votes

Visual Studio 2013, créé un projet web vierge avec la case MVC cochée. Il crée la structure de tous les fichiers avec un minimum de références aux espaces de noms MVC. J'ai ajouté un contrôleur simple et une vue. J'ai obtenu des erreurs de compilation "Le type ou l'espace de nom 'Ajax' n'existe pas dans l'espace de nom 'System.Web.Mvc' (il vous manque une référence d'assemblage)". L'éditeur de fichiers affiche également l'avertissement "Le nom 'ViewBag' n'existe pas dans le contexte actuel". Allez dans les références du projet, trouvez System.Web.Mvc, mettez la copie locale à true. Nettoyez le build et reconstruisez, cela a résolu mon problème.

2voto

Hernaldo Gonzalez Points 309

Si vous utilisez Visual Studio 2013 et que vous souhaitez utiliser MVC 3, vous obtiendrez cette erreur car Visual Studio 2013 ne prend pas en charge MVC 3 de manière native (même si vous modifiez ./Views/web.config), mais uniquement MVC 4 : https://msdn.microsoft.com/en-us/library/hh266747.aspx

2voto

Kcoder Points 2461

J'avais un ./Views/Web.Config mais cette erreur s'est produite après la publication du site. Il s'avère que la propriété de l'action de construction sur le fichier était définie sur None au lieu de Content . En changeant cette valeur pour Content a permis à la publication de fonctionner correctement.

1voto

csharpsql Points 21

J'ai rencontré ce problème après avoir modifié l'espace de noms par défaut de l'application dans la boîte de dialogue Propriétés.

Le fichier ./Views/Web.Config contenait une référence à l'ancien espace de nom.

0 votes

Oui, et cela donne un message d'erreur au mauvais endroit Cela vaut la peine de vérifier si tous les espaces de noms auxquels il est fait référence dans TOUS les fichiers web.config existent - j'avais un ancien espace de noms dans le fichier web/config de la zone qui causait de nombreux problèmes.

1voto

Robin Leblond Points 69

Dans mon cas, la modification de la page web:Version à la valeur correcte a résolu mon problème, pour moi la valeur correcte était(2.0.0.0 au lieu de 3.0.0.0) :

<appSettings>
        <add key="webpages:Version" value="2.0.0.0"/>
        <add key="webpages:Enabled" value="false"/>

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