J'ai ajouté une page cshtml dans un projet. Lorsque j'essaye d'y ajouter la déclaration suivante, j'obtiens une erreur: "Le nom 'modèle' n'existe pas dans le contexte actuel".
@model xyz.abc.SomeClass
J'ai vérifié les références, elles sont toutes en place. J'ai ajouté un web.config dans le dossier de vue, mais cela ne l'a pas corrigé.
Y a-t-il quelque chose qui me manque?
asp.net-mvc-3
razor
utilisateur602737
la source
la source
Réponses:
Mise à jour: si vous utilisez une version plus récente de MVC, le même processus s'applique, assurez-vous simplement d'utiliser le numéro de version correct dans la
<host>
ligne web.config .Eh bien, je me suis retrouvé à vivre la même chose que vous, et après quelques recherches supplémentaires, j'ai découvert quel était le problème!
Vous devez inclure le fichier web.config MVC3 par défaut pour le dossier Views. MVC3 en a deux: un à la racine de votre application et un pour le dossier vues. Cela a une section pour les espaces de noms inclus. Assurez-vous que le vôtre ressemble à ceci:
Je vous suggère de créer un nouveau projet MVC3, puis de copier simplement le web.config créé pour vous dans votre dossier de vues.
Important Une fois que vous avez fait cela, vous devez fermer le fichier et le rouvrir. Voila! Intellisense!
la source
MAIN
fichier web.config<add key="webpages:Version" value="3.0.0.0" />
J'ai rencontré ce même problème lorsque j'ai créé une nouvelle zone pour organiser mes pages. Ma structure ressemblait à:
Projet Web
Les vues créées dans le dossier Views sous le WebProject fonctionnaient correctement, mais les vues créées sous NewArea généraient l'erreur suivante:
Pour résoudre ce problème, j'ai copié le fichier web.config dans le dossier Views sous WebProject dans le dossier Views de NewArea. Voir ci-dessous.
Projet Web
J'ai rencontré cela parce que j'ai créé manuellement cette nouvelle zone en utilisant Ajouter -> Nouveau dossier pour ajouter les dossiers. J'aurais dû faire un clic droit sur le projet et sélectionner Ajouter -> Zone. Ensuite, Visual Studio aurait pris soin de configurer correctement la zone.
la source
Views/Web.config
référence à laSystem.Web.Mvc.MvcWebRazorHostFactory
version 5.0.0.0, et j'avais une zone tierce faisant référence à la v4.0 et avec les vues coopérant. Je suisViews/Web.config
revenu à la v4.0 et tout a fonctionné.Si vos vues sont dans un assemblage de bibliothèque de classes, ce qui est utile pour la réutilisation des vues partagées entre les projets, faire ce qu'Adam suggère peut ne pas suffire. J'avais encore des problèmes même avec ça.
Essayez ceci dans votre web.config à la racine de votre projet:
Et ceci dans le web.config dans votre dossier vues:
Cela a fonctionné pour moi. J'ai maintenant intellisense et aucune erreur de compilation sur mes vues dans un projet non MVC que je peux ensuite référencer à partir de plusieurs sites Web MVC.
la source
J'ai rencontré ce problème lorsque j'ai eu par inadvertance une copie du fichier de vue (About.cshtml) pour la route / about dans le répertoire racine. (Pas le dossier views) Une fois que j'ai déplacé le fichier hors de la racine, le problème a disparu.
la source
Eu des problèmes similaires en utilisant VS2012 et VS2013.
L'ajout de la ligne suivante à <appSettings> dans le web.config principal a fonctionné:
Si la ligne était déjà là mais disait 2.0.0.0, la changer en 3.0.0.0 fonctionnait.
la source
Mise à jour: 5/5/2015 Pour votre projet MVC 5, vous devez définir la version sur 5.0.0.0 dans votre /views/web.config
la source
Pendant que vous déclarez le modèle en haut de la vue en utilisant un code comme celui-ci:
vous devez mettre en majuscule vos références ci-dessous, par exemple:
Je crois qu'un web.config manquant dans le dossier Views en serait la cause principale, mais si cela est résolu et que le problème persiste, vérifiez que vous utilisez Model , pas model pour y faire référence dans la source.
la source
J'ai également rencontré ce problème. Ma situation était un peu différente.
Un de mes dossiers de vue a été accidentellement déplacé vers le répertoire racine de mon projet. Cela a conduit à la
project_root/SignUp/ViewName
correspondance d' itinéraire avantproject_root/Views/SignUp/ViewName
. Cela a causé l'@model
erreur.Après avoir replacé les vues à l'emplacement approprié, le répertoire a été en quelque sorte recréé à la racine du projet. Cette fois, vide.
/SignUp/ViewName
travaillé, mais a/SignUp/
jeté une403 - Forbidden: Access is denied.
erreur. Le dossier entier doit être supprimé de la racine du projet.J'espère que ça aidera quelqu'un. J'ai passé des heures à croire que le problème était causé par notre récente mise à niveau de MVC 3 vers MVC 4. Juste une remarque: les problèmes de mise à niveau ne devraient se produire qu'entre MVC 2 et MVC 3. Si vous voyez ce problème sur les versions ultérieures, ce n'est probablement pas dû au améliorer.
la source
Il m'a fallu des siècles pour résoudre ce problème, mais j'espère finalement l'avoir résolu sur MVC, c'est similaire:
J'ai réinstallé ASP.NET 4.5 ( http://www.asp.net/downloads )
J'ai suivi le tutoriel de mise à niveau sur http://www.asp.net/whitepapers/mvc4-release-notes
MAIS ce paragraphe mentionné est faux pour moi
Parce que j'ai Razor dans System.Web.Razor , j'ai donc changé l'espace de noms de rasoir en System.Web.Razor.
Ajoutez ceci à votre web.config
J'ai ajouté la référence d'assemblage à tous ces assemblages ci-dessus
Recherchez l'élément ProjectTypeGuids et remplacez {E53F8FEA-EAE0-44A6-8774-FFD645390401} par {E3E379DF-F4C6-4180-9B81-6769533ABE47}.
C'est tout.
la source
<add key="webpages:Version" value="2.0.0.0" />
c'est le facteur déterminant, l'autre paramètre n'est pas nécessaire.3.0.0.0
mais oui c'est très important!C'est une horrible erreur mais:
Assurez-vous que vous avez des fichiers Web.config dans votre View at Remote . Peut-être que vous avez sauté pour le télécharger par les filtres de votre programme Ftp.
la source
Il me manquait web.config sous Areas / MyArea / Views / web.config. Une fois ajouté, cela fonctionnait bien. C'était avec MVC 5 et .NET4.5
la source
Il y a aussi une autre raison. Dans mon cas, j'avais copié un fichier index.cshtml dans le dossier racine Web (en dehors du dossier Views) en tant que sauvegarde à partir du serveur distant.
Donc, j'ai continué à changer mon /views/web.config, j'ai continué à changer mon /views/home/index.cshtml et l'erreur a continué à se produire ... jusqu'à ce que je découvre le /index.cshtml en dehors du dossier de vues, je l'ai supprimé et bien sûr, il tout est revenu à la normale!
la source
J'ai rencontré le même problème, mais dans mon cas, la seule chose qui avait changé est que j'avais désinstallé Visual Studio 2012 et installé Visual Studio 2013. J'ai ouvert notre solution, mais j'ai continué à obtenir la même
The name 'model' does not exist in current context
erreur dans chaque vue Razor.Mon collègue a suggéré de vérifier les mises à jour pour VS2013. Après avoir installé la mise à jour 1 de VS2013 , j'ai cessé de recevoir cette erreur.
la source
Vérifiez votre fichier de configuration dans le répertoire des vues. dans l'ajout de la clé pour MVC 4/5
la source
La réinstallation de la pépite l'a résolu pour moi
PM> Package d'installation Microsoft.AspNet.Razor -Version 3.2.3
la source
Pour moi, c'était le problème. Ce bloc entier était absent de la section.
la source
J'ai le même problème après la mise à jour des packages. J'ai fait tout ce que vous avez écrit ci-dessus dans cette rubrique, mais le sous-jacent rouge du mot-clé model n'a pas disparu. Plus tard, solution trouvée: je viens de supprimer le dossier `` package '' du répertoire de mon projet et de le reconstruire, en attendant autorisé NuGet à restaurer les packages manquants. Rafraîchie, et c'est fait!
la source
Vérifiez que votre fichier web.config doit exister dans les fichiers publiés
la source
J'étais confronté au même problème et ensuite je trouve une solution. La solution est:
Le fichier .suo est un fichier caché dans le même dossier où se trouve le fichier de solution .svn . J'espère que ça marchera!
la source