web-dev-qa-db-fra.com

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

J'ai un serveur Windows 2003 R2. Je dois exécuter un site Web .NET MVC3 . J'ai déjà installé tous les Runtimes (1,2 et 4), j'ai installé tous les frameworks MVC (3 et 4) mais cette erreur ne disparaît pas.

J'ai le web.config qui est censé être dans les vues en place. J'ai suivi toutes et chacune des solutions à ce problème in/out stackoverflow. J'ai également déployé dans mon dossier bin toutes les dll à l'aide de l'option Ajouter les dépendances déployables (clic droit sur le projet mvc).

À ce stade, je ne sais plus quoi faire. Manqué d'idées ou de solutions en ligne.

J'ai déjà désinstallé et réinstallé tous les runtimes, les frameworks, etc. Sur mon ordinateur local, il fonctionne très bien (Windows 7), mais lorsque je déploie, j'obtiens l'erreur suivante.

Message d'erreur du compilateur: CS0103: Le nom 'ViewBag' n'existe pas dans le contexte actuel

Erreur de source:

Ligne 1: @{

Ligne 2: ViewBag.Title = "Page d'accueil";

Ligne 3:}

Ligne 4: <h2> @ ViewBag.Message </ h2>

Fichier source: d:\FamilyDermMVC\Views\Home\Index.cshtml Ligne: 2 

37
Pepito Fernandez

D'accord. Je l'ai corrigé. Je ne sais pas exactement ce qui a réglé le problème, mais je suppose que l'ensemble des "9 miles" le corrige.

J'ai supprimé (supprimer des programmes) toutes les extensions MVC, les outils et tout ce que vous y trouvez.

Puis réinstallé, sans supprimer, le runtime .net. 2 et 4. 

Puis installé mvc3 et mvc4 en arrière. Je suis allé sur asp.net pour les dernières versions.

Ensuite, j'ai fait la même chose dans mon ordinateur portable.

REMARQUE: vous aurez besoin de Power Shell 2.0 pour installer MVC4 sur un serveur Windows 2003. Vous devez trouver le téléchargement spécifique à ce serveur.

Une fois que j'ai fait cela, le pool d'applications recyclé et le serveur redémarré. 

BANG ... page chargée.

J'espère que cela aidera d'autres personnes à l'avenir.

Merci pour tes réponses tu.

PS: Mon sentiment est que je n’avais pas la même version (ni les mêmes versions) de mvc3 (ou mvc4) sur mon ordinateur portable et mon serveur, respectivement. 

1
Pepito Fernandez

On dirait que vous manquez les éléments suivants dans le Web.Config dans le dossier des vues :

/Views/Web.Config

<?xml version="1.0"?>

<configuration>

  <system.web.webPages.razor>
    <Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

      <pages pageBaseType="System.Web.Mvc.WebViewPage"> // <-- this line and contents are important
        <namespaces>
          <add namespace="System.Web.Mvc" />
          <add namespace="System.Web.Mvc.Ajax" />
          <add namespace="System.Web.Mvc.Html" />
          <add namespace="System.Web.Routing" />
        </namespaces>
      </pages>

  </system.web.webPages.razor>

Les vues proviennent généralement de System.Web.Mvc.WebViewPage qui est configuré dans le fichier web.config. Si vous ne déployez pas la DLL avec l'application, la classe de base est installée dans la DLL suivante:

Assemblage System.Web.Mvc.dll, v4.0.30319

c:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll

Mise à jour 1

Si vous effectuez une mise à niveau manuelle de MVC X vers MVC Y et que cela nécessite de modifier votre .NET Framework cible (disons de 4,5 à 4,6), si vous avez d'anciennes références (pointez sur MVC 5 au lieu de 6), il est évident que les anciens fichiers ne peuvent pas être utilisés conjonction avec des fichiers plus récents (par exemple, les DLL MVC 5 ne peuvent pas être utilisées avec System.Web dans 4.6).

71
Erik Philips

J'ai eu le même type de problème (code d'assistance HTML non reconnu).

Je ne suis pas sûr de savoir comment cela a commencé mais je l'ai résolu en remplaçant le texte suivant:

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

avec

<appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
</appSettings>

dans le fichier web.config de vues.

Trouvé ma solution ici

5
Derfenestrator

Je vois que cela a été posté il y a quelque temps, mais je pensais ajouter mon expérience avec ce problème de toute façon.

Lors de la création d'un nouveau projet MVC asp.net, j'ai eu cette même erreur dès le départ. J'ai simplement cliqué sur BUILD -> Clean Solution, puis sur Build Solution et le problème a été résolu. Je ne suis toujours pas tout à fait sûr de savoir pourquoi l’erreur est survenue en premier lieu, bien qu’elle ait été erronée juste après sa première apparition.

4
Fütemire

Resharper est probablement la cause

Allez dans Visual Studio/Outils/Options/Resharper Ensuite, cliquez sur Suspendre maintenant / puis Reprendre Resharper et votre journée ne sera plus grise mais votre fenêtre de rasoir sera probablement plus grise!

1
jwize

Il semble qu’il existe de nombreuses solutions et le taux de réussite de chacune d’entre elles est mitigé.

Pour moi, changer le numéro de version sur cette ligne du fichier Views/web.config a fonctionné:

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

J'ai changé 4.0.0.0 en 5.0.0.0 , enregistré, fermé la solution, rouvert, puis le tour est joué! Les gribouillis rouges agaçants étaient partis et l'intellisense est revenu

1
Matt

Dans mon cas, j’ai eu ce problème parce que j’essayais d’exécuter un projet MVC 3 sur une plateforme compatible MVC 2.

alors j'ai installé MVC 3 sur mon système, un problème a disparu

0
ajaykalyanynr

Parfois, fermer la vue, Reconstruire, Ouvrir la vue aide.

0
BrilBroeder

J'ai eu ce problème indépendamment d'avoir toute la configuration correcte faite dans le fichier web.config.

Découvert comme étant certains fichiers incorrects 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 ensuite fois j'ai ouvert Visual Studio).

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

C:\Users\your.name.here\AppData\Local\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 fermé mon projet, supprimé les fichiers sur ce chemin et rouvert mon projet, nettoyé la solution et reconstruit à nouveau et le problème a été résolu

La suppression de vos fichiers temporaires ASP.NET est également utile. C:\Utilisateurs\votre.nom.ici\AppData\Local\Temp\Fichiers ASP.NET temporaires.

De cette façon, vous pouvez corriger toutes les erreurs liées à intelligent dans la vue (Razor MVC) Essayez ceci et laissez-moi savoir que cela fonctionne pour moi.

Merci!

0
Developer

l'installation du support ASP.NET MVC 5 pour Visual Studio 2012 depuis http://www.asp.net/mvc/mvc5 résout le problème pour moi.

0
Joset