ASP.NET MVC 3 RC e personalizzato ViewEngine per consentire Visualizzazioni caricati esternamente
-
27-09-2019 - |
Domanda
Sto giocando in giro un po 'con dividere un MVC-site in diverse assemblee (imbattuto in alcune problemi in precedenza ).
Ora ho quasi tutto lavoro, ha ottenuto il progetto principale MVC che i carichi in qualsiasi assembly esterni si possono trovare. I complessi esterni sono sostanzialmente esterna aree . Quando ho avuto copiare i Viste e web.config per il tutto-principali siti Zone-cartella funzionato bene. Ora, tale cartella sarà più probabile iniziare a ottenere un po 'gonfio dopo un po', così ho pensato che avrei provato aggiungere nelle viste come risorse nella zona di montaggio, invece, vedere come che ha funzionato.
creato il mio VirtualPathProvider
e la mia VirtualFile
, li registrata con il pensiero HostingEnvironment
tutto andava bene. Si scopre che si utilizza solo la VirtualPathProvider
aggiunto al HostingEnvironment
al primo carico, non per i seguenti View carichi da parte del ViewEngine
.. Ok bene, ha trovato alcuni esempi di come si potrebbe ottenere intorno a questo implementando il proprio ViewEngine
di utilizzare il proprio VPP. Ma sì, questo non sembra essere una soluzione praticabile per MVC 3 ..
Come si è visto, né RazorViewEngine
nè WebFormViewEngine
implementare due delle "funzioni-chiave" Sembra, FileExists
e IsValidPath
. Questi sono ereditati da BuildManagerViewEngine
, e sai una cosa? Questi metodi sono contrassegnati come sealed
..
Chiunque abbia provato questo con MVC 3 e forse potrebbe mi spingere nella giusta direzione? Sono stato a fissare la fonte MVC 3 ora per un bel po ', ma non riesco proprio a vedere alcun modo di fare questo ..
Soluzione
Ora mi sento un po 'stupido, a quanto pare ho caricato il VPP troppo tardi .. avevo in Application_Start
, ma quando mi sono trasferita al mio PreApplicationStartMethod
invece, è stato utilizzato dal ViewEngine
. (Quindi nessuna implementazione di ViewEngine
sembra essere necessario, Wey!)
problema ora è che quando cerco di arrivare a una visualizzazione che è memorizzato come una risorsa, riesco a scaricarlo, invece di averlo reso .. Ma questo è qualcosa di diverso da questo modo!