73 votes

La vue doit dériver de WebViewPage ou de WebViewPage<TModel>.

Je suis Tutoriel sur l'architecture des plugins de Justin Slattery et j'essaie de l'adapter pour Razor, au lieu de WebForm Views.

Tout le reste (contrôleurs, chargement des assemblages de plugins, etc.) semble être correct. Cependant, je n'arrive pas à faire fonctionner correctement les vues Razor intégrées. Lorsque j'essaie de naviguer vers 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.

Quelqu'un peut-il me conseiller sur ce que je pourrais faire de mal ?

156voto

Darin Dimitrov Points 528142

Vous pouvez consulter le article de blog suivant qui est plus adapté à Razor.

Mais pour répondre à votre question, étant donné que vous servez maintenant vos vues à partir d'un emplacement non standard, il n'y a plus l'obligation d'avoir une vue d'ensemble. ~/Views/web.config qui s'applique et vous permet de spécifier le type de base pour vos vues de rasoir. Vous pourriez donc avoir besoin d'ajouter ce qui suit en haut de chaque vue rasoir :

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

6voto

nolsen311 Points 51

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

Tous les autres avaient la version 3.0.0.0 correctement référencée et se construisaient/se déroulaient 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.

1voto

max Points 411

J'ai eu un même problème car je n'ai pas committé le dossier packages qui contient les librairies razor. Ensuite, j'ai ajouté le paquet, il a fonctionné mais lors de la reconstruction, il s'est cassé. Puis j'ai désactivé l'exécution automatique de nuget lors de la construction et maintenant ça marche bien. Dans mon cas, c'est nuget qui a tout gâché.

0voto

Fr3gU Points 57

J'ai eu cette erreur aujourd'hui en mettant à jour un ancien projet MVC3 vers la version 4. Pour moi, la solution a été de supprimer l'attribut appliesTo="v2.0.50727" en el <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> sección.

0voto

Noobie3001 Points 444

Je veux partager ma douleur Le site fonctionnait bien localement, mais lorsque j'ai publié sur l'IIS du client, il a généré cette erreur. Tous les fichiers web.config (Root et /Views) correspondaient parfaitement à une copie fonctionnelle du site.

L'une des vues (logon.cshtml) avait des fins de lignes 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 dialogue des fins de lignes incohérentes et en publiant la vue logon.cshtml, j'ai réglé le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X