J'essaie d'utiliser ViewBag dans mon application. J'ai toutes les dernières DLL, 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 pas de changement.
En outre, je ne crois pas que les dll apparaissent dans le GAC.
Quel pourrait être mon problème? Ou comment ajouter les dll au GAC?
Vous devez ajouter la configuration Razor spécifique à MVC à votre web.config. Voir ici: Extensions Razor HtmlHelper (ou autres espaces de noms pour les vues) Introuvable
Utilisez l'outil de mise à niveau MVC 3 pour vous assurer automatiquement que vous disposez des bonnes valeurs de configuration.
J'avais le même problème. En fin de compte, il me manquait le fichier ./Views/Web.config
car j'ai créé le projet à partir d'une application ASP.NET vide au lieu d'utiliser un modèle ASP.NET MVC.
Pour ASP.NET MVC 5, un fichier Vanilla ./Views/Web.config
contient les éléments suivants:
<?xml version="1.0"?>
<!-- https://stackoverflow.com/a/19899269/178082 -->
<configuration>
<configSections>
<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">
<section name="Host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<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>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<!--
Enabling request validation in view pages would cause validation to occur
after the input has already been processed by the controller. By default
MVC performs request validation before a controller processes the input.
To change this behavior apply the ValidateInputAttribute to a
controller or action.
-->
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add Assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
L'ajout d'un fichier ./Views/Web.config
contenant ce contenu a résolu ce problème pour moi.
Essayez de nettoyer et de reconstruire. Cela a fonctionné dans mon cas.
J'ai eu le même problème dans une solution mise à niveau vers MVC 5 dans Visual Studio 2015.
Dans le fichier web.config du dossier Views (pas le répertoire web.config), j'ai mis à jour le numéro de version mentionné dans <configSections>
de 2.0.0.0
à 3.0.0.0
.
<configuration>
<configSections>
<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">
<section name="Host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
Après avoir essayé différentes choses, il s’avère que c’est le cache VS. Vous pouvez le résoudre en supprimant les fichiers de cache situés dans:
C:\Utilisateurs\votre.nom.ici\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache
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
Les fichiers seront recréés lors du prochain lancement de Visual Studio.
J'ai eu le même problème et Crimbo m'a donné le bon indice, cela a été causé par le fichier ./Views/Web.config qui était présent mais ne contenant 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 ondes rouges sous chaque utilisation de ViewBag ont disparu!
Si vous utilisez Visual Studio 2013 et aimez MVC 3, vous obtenez cette erreur car Visual Studio 2013 ne prend pas MVC 3 en mode natif (même si vous modifiez ./Views/web.config), seul MVC 4: https://msdn.Microsoft.com/en-us/library/hh266747.aspx
J'avais un fichier ./Views/Web.Config
mais cette erreur s'est produite après la publication du site. Il s'avère que la propriété d'action de génération sur le fichier a été définie sur None
au lieu de Content
. Changer ceci en Content
a permis à la publication de fonctionner correctement.
Si vous aviez essayé toutes les réponses disponibles et que vous ne trouviez toujours pas la réponse, cela pourrait résoudre le problème . Si vous avez différentes configurations de solutions telles que Debug, Release etc , Définissez le chemin de sortie du projet sur 'bin' et compilez le projet. Annule le changement après la compilation.
VS cherche des dll dans le dossier bin
J'avais déjà essayé de supprimer le fichier bin et obj et de redémarrer VS et je n'ai pas eu de chance.
J'ai également eu ce problème plusieurs fois et c'est une douleur à résoudre à chaque fois. Cela est souvent dû au fait que le fichier web.config n'a pas la version correcte de l'une des références. Cela signifie que vous devez cliquer sur la référence dans Visual Studio pour voir la version dans l'onglet de propriété, puis la faire correspondre à la version dans les fichiers web.config.
Une autre méthode consiste (si possible) à mettre à niveau vers une version ultérieure du framework .net, puis à supprimer les fichiers bin/obj et à redémarrer Visual Studio. Je ne peux que supposer que cela change quelque chose dans le
Une vérification rapide de la différence entre le fichier csproj ne montre pas réellement de différence majeure ... Mais les différences qu'il montre sont celles que j'ai affichées
<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 View)
<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=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
Enfin, dans la console du gestionnaire de packages, ajoutez update-package
Lancer le site localement et voir les erreurs de compilation qui ont été corrigées par mon deuxième paragraphe (correspondant aux versions des références)
J'ai eu ce problème après avoir modifié l'espace de nom par défaut de l'application dans la boîte de dialogue Propriétés.
Le ./Views/Web.Config contenait une référence à l'ancien espace de noms
Dans mon cas, le fait de modifier la page Web: Version sur la valeur appropriée 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"/>
Après avoir essayé toutes les approches, aucune d’entre elles n’a fonctionné pour moi car toutes mes configurations étaient 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), tapez les chaînes ci-dessus et supprimez tous les fichiers temporaires.
Comme @ Wilson Vallecilla 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
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 construit à 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.
Cela fonctionne pour moi.
Merci!
J'ai mis à jour des pages Web: Version sous dans le dossier ./Views/Web.Config mais ce paramètre était également présent dans web.config à la racine. Mettre à jour les deux ou supprimer de la racine web.config