web-dev-qa-db-fra.com

Le nom 'ViewBag' n'existe pas dans le contexte actuel - Visual Studio 2015

Je commence à développer à nouveau dans ASP.NET et j'ai rencontré une petite erreur dans Visual Studio. Mes fichiers .cshtml affichent des erreurs lors de l’utilisation de quelques fonctions de rasoir. Par exemple, "Le nom 'ViewBag' n'existe pas dans le contexte actuel". Voici une photo: 

 screenshot of problem in visual studio 2015

J'utilise un projet de démonstration. Vous pouvez trouver le projet ici: https://github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject

J'ai parcouru plusieurs autres threads et la plupart suggèrent de mettre à jour le (s) fichier (s) web.config. Ces 2 fichiers de configuration sont déjà présents et, comme il s’agit d’une démo assez populaire, je suppose qu’il contient toute la configuration requise. Bien sûr, j'ai parcouru ces fichiers de configuration et ils incluent effectivement les solutions suggérées. 

Autres détails: 

  • J'ai déjà utilisé nettoyer et reconstruire sur la solution, mais cela n'a rien changé. 
  • Quand je crée un tout nouveau projet MVC, cela fonctionne
  • Mon ami a le même problème et nous utilisons tous les deux VS 2015 et Windows 10
  • Je peux toujours exécuter l'application et ça marche. 

Merci d'avance.

76
Michjuh

J'ai eu ce problème en dépit de toute la configuration correcte.

Il s’est avéré que certains mauvais fichiers se trouvaient dans le cache de composants, empêchant les vues Razor de reconnaître ViewBag, Model et HtmlHelpers . La suppression de ces fichiers a résolu le problème (de bonnes versions de ces fichiers ont été créées lors de la prochaine ouverture de Visual Studio).

Les fichiers se trouvent ici:

%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache

Supprimer les quatre fichiers:

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

J'ai par la suite vu le même problème sur plusieurs autres machines de développement et ce correctif le résout rapidement.

98
Fenton

Mettez à jour les numéros de version dans les paramètres du fichier web.config du dossier Vues.

 <Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

Si vous avez mis à jour la version de MVC via nuget, devrait être:

 <Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

D'autres versions de dépendance devront également être mises à jour. Les problèmes de compilation et d’espace de noms dans les aides et objets de Views for MVC sont généralement liés à des fichiers web.config perturbés dans les dossiers View.

33
Benjamin Anderson

Recherchez "pages Web: Version" dans les paramètres d'applications et mettez-le à jour vers la version 3.0.0.0. Mon web.config avait

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

et je l'ai mis à jour pour

<add key=”webpages:Version” value=”3.0.0.0″ />
17
Damian Green

Après avoir tout essayé sous le soleil, il s'est avéré que quelque chose avait modifié mon System.Web.WebPages.Razor<sectionGroup> dans /Views/Web.Config du Camcode adéquat System.Web.WebPages.Razor en un system.web.webpages.razor en minuscules, ce qui a finalement été ma disparition. 

En espérant que cela puisse aider une autre âme pauvre avec ce problème ... 

Pour référence, ceci est la bonne entrée (pour mon scénario) 

<sectionGroup name="System.Web.WebPages.Razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
10
jbwebtech

J'ai accidentellement supprimé web.config du dossier View, pensant que c'était inutile. Quand je l'ai remis, ça a commencé à fonctionner.

9
InGeek

Parfois, il ne suffit pas de modifier les numéros de version dans les paramètres de web.config. Ce problème se produit car Visual Studio 2015 n'a pas l'outillage mvc4. 

La solution consiste à mettre à niveau votre projet vers MVC 5. Cela résout totalement le problème .. Vous pouvez obtenir de l'aide à partir de cette page. Cela l'explique clairement.

http://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and- web-api-2

À propos, l'équipe de Visual Studio a déclaré qu'elle ajouterait la prise en charge de mvc4 à Visual Studio 2015 avec la première mise à jour.

4
Burk

j'ai fait face à ce problème plusieurs fois et finalement j'ai découvert que c'était parce que le dossier des vues devait contenir sa propre configuration Web 

3
hosam hemaily

tard dans le jeu, mais aucune de ces solutions ne fonctionnait pour moi. 

J'ai effectué la mise à niveau vers VS 2017 et le site a fonctionné, mais le compilateur Visual Studio a cassé la plupart des fichiers .cshtml 

TLDR; 

mysolution.sln avait la mauvaise version 

 sln diff

vous voulez donc créer une nouvelle solution avec de nouveaux VS, la comparer à la vôtre et copier les informations de version par-dessus. 

étapes de mise à niveau complète:

  1. s'assurer que le fichier .sln a la version correcte pour VS 
  2. clic droit sur MySolution dans VS> Nuget Manager> Mises à jour> exécuter toutes les mises à jour
  3. clic droit sur MySolution dans VS> Application> mettre à jour le cadre cible (4.5.2 dans mon cas)
  4. résoudre les problèmes de version dans les fichiers .config (c'est-à-dire RAZOR à 3.0.0.0)
  5. résoudre les problèmes de code dans le compilateur (pour moi, ForEach était ambigu)
1
Sonic Soul

J'ai bien perdu ma journée de travail. J'ai tout essayé dans cet article (et dans d'autres), en vain. Finalement, j'ai découvert que je devais ouvrir le projet différemment. Je viens de mettre à niveau un site Web existant vers Visual Studio 2015, MVC5, .NET Framework 4.5.2 et j'utilise Windows 10, mais je suppose que la réponse aurait été la même pour les autres versions de chaque application logicielle.

C'est donc l'option de menu que j'avais choisie pour ouvrir un site Web:

 enter image description here

Au lieu de cela, j'ai ouvert le fichier csproj définissant le projet à l'aide de cette option de menu:

 enter image description here

J'ai ensuite eu l'option "solution propre" à laquelle de nombreuses autres personnes font référence:

 enter image description here

Cependant, je n'avais même pas besoin de ça - tout fonctionnait! Eh bien, je suis passé à la prochaine série de problèmes, de toute façon ...

1
Andy Brown

J'ai pu résoudre le problème en ajoutant ce qui suit en haut de ma page .cshtml

@{ViewBag.Title = "Title";}

Après la recompilation, j'ai pu supprimer cette ligne et l'erreur a disparu. 

0
Versatile

J'ai rencontré le même problème avec l'un de mes points de vue. Dans mon cas, je viens de nettoyer la solution et d'essayer de le reconstruire et de ses travaux.

0
SATYA PRAKASH NANDY

L'allumer et rallumer a fonctionné pour moi. Vous pouvez essayer de redémarrer Visual Studio.

0
kravits88

Après avoir essayé au moins 90% de chaque solution/astuce de ce sujet (et d'autres), je l'ai finalement résolu !! Alerte spoiler, il n’existe aucune trace de logique, c’est la solution dite: Exécuter la solution avec tous les onglets fermés a finalement fonctionné, alors que rien ne m’aurait épargné le "ViewBag & Co n’existe pas dans le contexte actuel" ... Vous avez été prévenu, pas de logique terrifiante!

J'espère que ça va aider quelqu'un un jour ^^

0
Jueverhard

J'avais ajouté le contrôleur par

  • Étape 1: Ajouter> Classe
  • Étape 2: UserController
  • .
  • .
  • .

code correspondant créé:

namespace SampleApp.Controllers
{
    public class UserController {
    }
}

Mes erreurs ont été changées en changeant l'étape 1 comme:

  • Étape 1: Ajouter> Contrôleur
  • Étape 2: contrôleur d'utilisateur
  • .
  • .
  • .

code correspondant créé:

namespace SampleApp.Controller {
    public class UserController : Controller {
    }
}

Le problème était: Je n'avais pas hérité de ma classe de Controller

Autres messages de mon erreur inclus - qui provenaient tous de ce problème:

erreur CS0117: 'ModelState' ne contient pas de définition pour 'IsValid'

erreur CS0103: le nom 'RedirectToAction' n'existe pas dans le contexte actuel

erreur CS0103: le nom 'View' n'existe pas dans le contexte actuel

erreur CS0103: le nom 'ViewBag' n'existe pas dans le contexte actuel

erreur CS0103: le nom 'Json' n'existe pas dans le contexte actuel

J'espère que ce changement aidera ceux qui n'ont pas prêté attention à leurs premiers pas.