La vue doit dériver de WebViewPage, ou WebViewPage

je suis Justin Slattery's plugin Architecture tutorial et essayer de l'adapter pour Razor, au lieu de vues WebForm.

Tout le reste (les contrôleurs, plugin assemblée de chargement, etc) semble être correct. Cependant, je ne suis pas en mesure d'obtenir des vues de rasoir intégré pour fonctionner correctement. Lorsque j'essaie de parcourir le "HelloWorld/Index", j'obtiens l'erreur suivante:

The view at '~/Plugins/MyProjectPlugin.dll/MyProjectPlugin.Views.HelloWorld.Index.cshtml' must derive from WebViewPage or WebViewPage<TModel>.

L'exception est levée par System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +262

je peux inclure la trace complète de la pile, si nécessaire.

est-ce que quelqu'un peut me conseiller sur ce que je pourrais faire de mal?

71
demandé sur Scott Weldon 2011-11-15 00:13:20

7 réponses

vous pouvez consulter le suivant l'article de blog qui est plus adapté à Razor.

mais pour répondre à votre question, puisque vous servez maintenant vos vues d'un emplacement non standard il n'y a plus le fichier ~/Views/web.config qui s'applique et vous permet de spécifier le type de base pour vos vues de rasoir. Donc, vous pourriez avoir besoin d'ajouter ce qui suit sur le dessus de chaque rasoir vue:

@inherits System.Web.Mvc.WebViewPage
@model ...
155
répondu Darin Dimitrov 2011-11-14 20:19:28

Note: j'avais un problème extrêmement similaire et j'ai dû finalement découvrir que j'étais le seul développeur avec MVC 4.0.0.0 lié dans leur solution.

tout le monde avait 3.0.0.0 correctement référencé et construisait/courait sans erreur.

TL;DR assurez-vous que vos références sont les mêmes que celles du reste de votre groupe de développement.

6
répondu nolsen311 2013-07-23 20:09:26

j'ai eu le même problème parce que je n'ai pas engagé le dossier packages qui contient les bibliothèques razor. Puis j'ai ajouté le paquet, il a fonctionné mais sur reconstruire il s'est cassé. Puis j'ai désactivé la course automatique nuget sur build et maintenant ça marche très bien. Dans mon cas, nuget a été gâcher les choses.

1
répondu max 2015-01-05 23:18:15

vient d'obtenir cette erreur aujourd'hui lors de la mise à jour D'un ancien MVC3-project à la version 4 et pour moi la solution était de supprimer l'attribut appliesTo="v2.0.50727" dans la section <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> .

0
répondu Fr3gU 2015-06-01 13:15:47

je veux partager ma douleur.. le site fonctionnait bien localement, cependant quand j'ai publié à IIS du client, il lançait cette erreur. Tout le web.les fichiers de configuration (root et / Views) correspondent parfaitement à une copie de travail du site.

l'Un des points de vue (ouverture de session.cshtml) avait des fins de ligne incohérentes et je n'ai pas cliqué Oui pour le corriger sur ma machine Windows.

cliquer Oui dans la boîte de dialogue fin de ligne incohérente et publier l'ouverture de session.cshtml vue il fixe pour moi.

0
répondu Noobie3001 2016-09-14 10:03:07

j'ai eu cette erreur quand j'ai essayé d'ajouter un échafaudage MVC (spécifiquement le dossier Views ) à un projet D'API Web. réponse de Darin Dimitrov dit:

il n'y a plus le fichier ~/Views/web.config qui s'applique et vous permet de spécifier le type de base pour vos vues de rasoir

et dans les commentaires sur cette réponse, joelnet a dit :

j'ai pu copier le web.config de ~/Vues pour mon autre emplacement pour résoudre mon problème avec cela.

et Paul D'Aoust a dit :

si vous avez des difficultés à obtenir la solution dans le commentaire de @joelnet pour travailler, essayez de nettoyer et reconstruire le projet.

Ces conseils m'ont aidé à trouver la solution.

J'Ai D'Abord j'ai copié le Web.config du dossier Views d'un autre projet dans la même solution à mon nouveau dossier Views . J'ai renommé la balise principale namespace pour correspondre au nouveau projet, et après avoir fait enlever une erreur, une autre <add namespace="..." /> dont je n'avais pas besoin. J'ai alors déclenché une construction (seulement une construction normale, je n'avais pas besoin de nettoyer et de reconstruire), et j'ai pu charger ma nouvelle vue sans erreurs.

0
répondu Scott Weldon 2017-02-03 17:38:27

installez le paquet: Install-Package Microsoft.AspNet.Pages web

-1
répondu Kelly Soares 2016-04-04 20:39:24