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:
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:
Merci d'avance.
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:
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.
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.
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″ />
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">
J'ai accidentellement supprimé web.config
du dossier View, pensant que c'était inutile. Quand je l'ai remis, ça a commencé à fonctionner.
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.
À 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.
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
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
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:
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:
Au lieu de cela, j'ai ouvert le fichier csproj définissant le projet à l'aide de cette option de menu:
J'ai ensuite eu l'option "solution propre" à laquelle de nombreuses autres personnes font référence:
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 ...
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.
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.
L'allumer et rallumer a fonctionné pour moi. Vous pouvez essayer de redémarrer Visual Studio.
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 ^^
J'avais ajouté le contrôleur par
code correspondant créé:
namespace SampleApp.Controllers
{
public class UserController {
}
}
Mes erreurs ont été changées en changeant l'étape 1 comme:
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.