Razor View lance «Le nom« modèle »n’existe pas dans le contexte actuel»

Après un refactoring significatif dans mon application MVC 4, et Razor affiche cette erreur lors du débogage de Views:

Le nom «modèle» n’existe pas dans le contexte actuel.

Ceci est la ligne de code incriminée:

@model ICollection 

Je sais que l’utilisation de @model est correcte.

Pourquoi cela arrive-t-il? Comment puis-je le réparer?

Je pense que vous avez foiré le fichier web.config qui se trouve dans le dossier Views.

Créez un nouveau projet ciblant le même framework .NET et copiez son fichier Views / web.config par-dessus celui de votre projet actuel.

Cela résoudra votre problème.

En outre, Dudeman3000 a commenté “si vous avez des zones dans votre projet MVC, elles ont toutes des fichiers Views \ web.config!”

assurez-vous d’avoir les éléments suivants dans votre site web.config et le répertoire de vues web.config dans la section appSettings

  

Pour MVC5, utilisez:

  

(Et il n’existe que dans le fichier principal web.config.)

Voici ce que j’ai fait:

  1. Fermer Visual Studio
  2. Supprimer le fichier SUO
  3. Redémarrez Visual Studio

Le fichier .suo est un fichier caché dans le même dossier que le fichier de solution .svn et contient les options utilisateur Visual Studio.

J’ai eu le même problème, j’ai créé un nouveau projet et copié les fichiers web.config comme recommandé dans la réponse de Gupta, mais cela n’a pas résolu le problème pour moi. J’ai vérifié la réponse par Alex et Liam, je pensais que cette ligne devait avoir été copiée depuis le nouveau web.config, mais il semble que le nouveau projet lui-même n’ait pas cette ligne (MVC5):

  

L’ajout de la ligne au fichier views / web.config a résolu le problème pour moi.

Dans mon cas, j’ai récemment mis à jour de MVC 4 à MVC 5, ce qui bloque assez mal le fichier web.config. Cet article a énormément aidé.

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

L’essentiel est que vous devez vérifier toutes vos références de numéro de version dans vos fichiers web.config et Views / web.config pour vous assurer qu’elles référencent les versions mises à niveau correctes associées à MVC 5.

Changer la ligne suivante dans le dossier web.config of view a résolu la même erreur.

De

   

À

  

Dans mon cas, le code suivant s’avère utile. Placez le code ci-dessous dans le fichier Web.config sous le dossier Vues.

   

Une fois le code mis à jour, assurez-vous de nettoyer et de reconstruire la solution. J’espère que cela vous aidera!

J’ai trouvé une solution. Si vous souhaitez mettre à jour la version de razor ou mvc 4 à 5, modifiez certaines lignes.

Ancien code dans Views / web.config

  

Remplacé par

  

sectionGroup doit également être modifié.

Passer à @Model de @model a fait le travail pour moi.

Pour moi, le problème était une version .NET conflictuelle dans l’une des bibliothèques récemment imscopes. La bibliothèque que j’ai imscope a été compilée pour la version 4.5.2 et le site ASP.NET MVC que j’ai importé dans la version 4.5 ciblée. Après la recompilation, lib pour 4.5, le site Web serait compilé.

De plus, il n’y avait pas d’erreurs de compilation, mais le problème était signalé comme un “avertissement”. Donc, assurez-vous de lire tous les avertissements s’il y en a.

Dans mon cas, le problème était que, après la mise à niveau du projet de MVC 4 vers MVC 5, j’ai en quelque sorte manqué un changement de version dans le fichier Views / web.config:

   

Il avait toujours l’ancienne version 2.0.0.0. Après avoir changé la version en 3.0.0.0, tout a bien fonctionné.

En outre, à cause de ce problème, Visual Studio 2015 Community Edition commence à dénaturer le processeur (utilisation de 30 à 40% en veille) chaque fois que j’ouvre un fichier .cshtml.

J’essayais d’append une vue qui était en dehors de mon dossier “Views” (juste pour organiser mon code différemment, je suppose), quand j’ai eu ce problème. La création de la vue dans Views (comme par convention) l’a résolu.

Dans mon cas, il me manquait @ au début de la foreach

  @foreach (var item in Model) {   @Html.DisplayFor(modelItem => item.Label)   @Html.DisplayFor(modelItem => item.Value)   } 

Pour résoudre ce problème, je me suis assuré de la mise à niveau vers la dernière version de MVC en utilisant NuGet et la console Package Manager.

Package d’installation Microsoft.AspNet.Mvc -Version 5.2.4

Puis mis à niveau vers la dernière version de Razor

Package d’installation Microsoft.AspNet.Razor -Version 3.2.4

Ensuite, j’ai changé tous les fichiers web.config pour refléter le changement. Comme vous le verrez ci-dessous:

Dans le fichier web.config principal, assurez-vous que les pages Web: version sont correctes. C’est là que l’on peut le trouver (ignorez les autres clés):

        

Recherchez ensuite les autres versions répertoriées dans les assemblys, vérifiez la version de l’assembly par rapport à la version de la bibliothèque répertoriée dans vos références de projet! Vous n’avez peut-être pas besoin de tout cela.

            

Runtime assemblyBinding devrait également afficher la “newversion”, voir où il lit NewVersion 5.2.4.0? Mais vérifiez également toutes les autres versions.

                     

ALORS dans la section Views Web.Config, assurez-vous que Razor est la version correcte:

    

Et enfin, il y a la section Pages du site Web Views.Config

       

Si vous prenez ce problème sans aucun changement sur votre projet, comme si vous le faisiez, vous devez modifier votre fichier web.config placé dans le dossier View. Il suffit d’écrire une nouvelle ligne en appuyant sur Entrée ou Supprimer une ligne vide. Enregistrez ensuite votre fichier web.config et reconstruisez. mon problème résolu avec cette solution

Dans mon cas, j’ai supprimé le fichier web.config du dossier Views par accident. Je l’ai rajouté et c’était correct.

Aucune des réponses existantes n’a fonctionné pour moi, mais j’ai trouvé ce qui fonctionnait pour moi en comparant les fichiers .csproj de différents projets. La modification manuelle suivante du .csproj XML .csproj résolu le problème de Razor-intellisense pour moi, peut-être que cela peut aider quelqu’un d’autre qui a essayé toutes les autres réponses en vain. La clé consiste à supprimer toutes les instances de False dans les :

   path\to\Foo    path\to\Bar    

Je ne sais pas comment ils sont arrivés ou exactement ce qu’ils font, peut-être que quelqu’un de plus intelligent que moi peut append cette information. J’étais juste content de résoudre ce problème.

J’ai résolu le problème en utilisant @Model au lieu de simplement model lors de l’impression des variables.

Vous devez redémarrer Visual Studio pour que les modifications apscopes à ces réponses prennent effet!

Je pense que cela nécessitait une certaine exposition, parce que vous essayez beaucoup de changements et que vous trouvez la bonne combinaison, mais que vous ne savez jamais, à moins que vous ayez réellement tenté de redémarrer et que vous ayez manqué le correctif tous ensemble.

Vous êtes susceptible d’utiliser dans le code une variable nommée model .