71

Sto seguendo Justin Slattery's Plugin Architecture tutorial e sto provando ad adattarlo a Razor, invece di Visualizzazioni WebForm.La vista deve derivare da WebViewPage o WebViewPage <TModel>

Tutto il resto (controller, caricamento del gruppo di plug-in, ecc.) Sembra essere a posto. Tuttavia, non sono in grado di ottenere visualizzazioni Razor incorporate per funzionare correttamente. Quando cerco di individuare la "HelloWorld/Indice", ottengo il seguente errore:

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

L'eccezione viene generata da System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +262

posso includere l'analisi dello stack completo, se necessario.

Qualcuno può consigliare su cosa potrei fare male?

risposta

155

Si può verificare il following blog post che è più adatto per il rasoio.

Ma per rispondere alla tua domanda, visto che ora stai servendo le tue visualizzazioni da una posizione non standard, non c'è più il file ~/Views/web.config che si applica e ti permette di specificare il tipo di base per le tue visualizzazioni del rasoio. Così potrebbe essere necessario aggiungere il seguente nella parte superiore di ogni vista rasoio:

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

Grazie per entrambe le informazioni. Controllerò il blog che hai menzionato. – Nasir

+12

Sono stato in grado di copiare web.config da ~/Views nella mia posizione alternativa per risolvere il mio problema con questo. Grazie. – joelnet

+1

@Darin Dimitrov Ho un problema simile. Quando provo ad aggiungere '@ inherits', sto ricevendo un errore che dice che non posso usare' @ inherits' e '@ model' allo stesso tempo. Puoi aiutare con questo? MODIFICARE. Sto usando mvc4 – gumenimeda

6

Nota: ho avuto un problema estremamente simile e ha dovuto rintracciare infine giù che io ero l'unico sviluppatore con MVC 4.0.0.0 collegato in la loro soluzione.

Tutti gli altri avevano 3.0.0.0 fatto correttamente riferimento e stava costruendo/correndo senza errori.

TL; DR Assicurarsi che i riferimenti siano gli stessi del resto del gruppo di sviluppo.

1

Ho avuto lo stesso problema perché non ho eseguito il commit della cartella dei pacchetti che contiene le librerie del rasoio. Poi ho aggiunto il pacchetto, ha funzionato, ma al momento della ricostruzione si è rotto. Quindi ho disattivato l'esecuzione automatica di nuget su build e ora funziona bene. Nel mio caso, nuget stava facendo casino.

0

Ho appena ricevuto questo errore oggi durante l'aggiornamento di un vecchio progetto MVC3 alla versione 4 e per me la soluzione era rimuovere l'attributo appliesTo="v2.0.50727" nella sezione <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">.

-1

Installare il pacchetto: Microsoft.AspNet.WebPages Install-Package

+1

Non credo che il pacchetto '' Microsoft.AspNet.WebPages' fosse disponibile 4 anni fa per ASP.NET MV3. – Nasir

+2

@Nasir, sto chiedendo sinceramente, è preferibile su StackOverflow che la risposta riguardi la tecnologia che era disponibile al momento della pubblicazione anche se il problema persiste ancora oggi? –

+1

la mia opinione personale è che se stai rispondendo a una vecchia domanda, almeno riconosci che la risposta fornita potrebbe non essere stata pertinente quando la domanda è stata posta originariamente. Altrimenti, si presenta come una risposta non informata o che l'utente non ha prestato attenzione ai dettagli (la data è uno di quei dettagli). – Nasir

0

voglio condividere il mio dolore .. sito stava lavorando bene a livello locale, tuttavia quando ho pubblicato a IIS del cliente, si stava gettando questo errore. Tutti i file web.config (root e/Views) sono perfettamente compatibili con una copia funzionante del sito.

Una delle viste (logon.cshtml) ha terminazioni di linea incoerenti e non ho fatto clic su Sì per correggerlo sul mio computer Windows.

Facendo clic su Sì nella finestra di dialogo di fine riga incoerente e pubblicando la vista logon.cshtml, è stato risolto per me.

0

Ho ricevuto questo errore quando ho provato ad aggiungere lo scaffold MVC (in particolare la cartella Views) a un progetto API Web.Darin Dimitrov's answer dice:

there is no longer the ~/Views/web.config file that applies and allows you to specify the base type for your razor views

E in commenti su questa risposta, joelnet said:

I was able to copy the web.config from ~/Views to my alternate location to solve my issue with this.

e Paul d'Aoust said:

If you're having trouble getting the solution in @joelnet's comment to work, try cleaning and rebuilding the project.

Questi suggerimenti mi ha aiutato a capire la soluzione.

Prima ho copiato lo Web.config dalla cartella Views di un altro progetto nella stessa soluzione della mia nuova cartella Views. Ho rinominato il tag principale namespace per abbinare il nuovo progetto e, dopo aver ricevuto un errore, ho rimosso un altro <add namespace="..." /> che non mi serviva. Ho quindi attivato una build (solo una build normale, non ho bisogno di pulire e ricostruire), e sono stato in grado di caricare la mia nuova vista senza errori.

Problemi correlati