La vue doit dériver de WebViewPage ou WebViewPage

Je suis le tutoriel Architecture des plugins de Justin Slattery et j’essaie de l’adapter pour Razor, plutôt que pour les vues WebForm.

Tout le rest (contrôleurs, chargement des assemblages de plug-ins, etc.) semble être correct. Cependant, je ne parviens pas à faire fonctionner correctement les vues Razor intégrées. Lorsque j’essaie de naviguer vers “HelloWorld / Index”, j’obtiens l’erreur suivante:

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

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 stack, si nécessaire.

Quelqu’un peut-il conseiller sur ce que je fais peut-être mal?

Vous pouvez consulter l’article suivant qui est plus adapté à Razor.

Mais pour répondre à votre question, étant donné que vous diffusez maintenant vos vues depuis un emplacement non standard, le fichier ~/Views/web.config ne s’applique plus et vous permet de spécifier le type de base pour vos vues de razor. Vous devrez donc peut-être append ce qui suit en haut de chaque vue de razor:

 @inherits System.Web.Mvc.WebViewPage @model ... 

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

Tous les autres utilisateurs avaient 3.0.0.0 correctement référencés et construisaient / exécutaient sans erreur.

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

J’ai eu le même problème parce que je n’ai pas commis le dossier de paquets qui contient les bibliothèques de razor. Ensuite, j’ai ajouté le paquet, cela a fonctionné mais lors de la reconstruction, il s’est cassé. Ensuite, j’ai désactivé l’exécution automatique de nuget lors de la construction et maintenant cela fonctionne très bien. Dans mon cas, nuget était en train de faire des bêtises.

Je viens de recevoir cette erreur aujourd’hui lors de la mise à jour d’un ancien projet MVC3 vers la version 4 et pour moi, la solution consistait à supprimer l’atsortingbut appliesTo="v2.0.50727" dans l’ appliesTo="v2.0.50727" section.

Je veux partager ma douleur .. le site fonctionnait bien localement, mais quand je publiais sur IIS du client, il jetait cette erreur. Tous les fichiers web.config (root et / Views) correspondent parfaitement à une copie de travail du site.

L’une des vues (logon.cshtml) comportait des fins de ligne incohérentes et je n’ai pas cliqué sur Oui pour la corriger sur ma machine Windows.

En cliquant sur oui dans la boîte de dialog de fin de ligne incohérente et en publiant la vue logon.cshtml, vous l’avez corrigé.

J’ai eu cette erreur lorsque j’ai essayé d’append un échafaudage MVC (en particulier le dossier Views ) à un projet d’API Web. La réponse de Darin Dimitrov dit:

le fichier ~/Views/web.config ne s’applique plus et vous permet de spécifier le type de base de vos vues de razor

Et dans les commentaires sur cette réponse, joelnet a déclaré :

J’ai pu copier le fichier web.config de ~ / Views dans mon autre emplacement pour résoudre ce problème.

et Paul d’Aoust a dit :

Si vous ne parvenez pas à trouver la solution dans le commentaire de @ joelnet, essayez de nettoyer et de reconstruire le projet.

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

J’ai d’abord copié le Web.config du dossier Views d’un autre projet dans la même solution que mon nouveau dossier Views . J’ai renommé la balise d’ namespace principale pour correspondre au nouveau projet, et après avoir obtenu une erreur, j’ai supprimé un autre dont je n’avais pas besoin. J’ai ensuite déclenché une construction (seulement une version normale, je n’ai pas eu besoin de nettoyer et de reconstruire), et j’ai pu charger ma nouvelle vue sans erreurs.

Installez le paquet: Install-Package Microsoft.AspNet.WebPages