ASP.NET MVC 3 RC e ViewEngine personalizados para permitir visualizações carregadas externamente

StackOverflow https://stackoverflow.com/questions/4246647

Pergunta

Estou brincando um pouco ao dividir um local MVC em várias montagens (encontrado em alguns questões mais cedo).

Agora eu tenho quase tudo funcionando, obtive o projeto principal do MVC que carrega em qualquer assemblies externo que possa encontrar. Os conjuntos externos são basicamente externos áreas. Quando eu copiei as visualizações e o web.config para as áreas do local principal, tudo funcionou, tudo funcionou bem. Agora, essa pasta provavelmente começará a ficar um pouco inchada depois de um tempo, então pensei em tentar adicionar as vistas como recursos na montagem da área em vez disso, veja como isso funcionou.

Criou o meu próprio VirtualPathProvider e meu próprio VirtualFile, registrou -os com o HostingEnvironment Pensando que tudo estava bem. Acontece que só usa o VirtualPathProvider adicionado ao HostingEnvironment na primeira carga, não pelas seguintes cargas de visualização pelo ViewEngine.. ok bem, encontrei alguns exemplos de como você poderia contornar isso implementando o seu próprio ViewEngine Para usar seu próprio VPP. Mas sim, isso não parece ser uma solução viável para o MVC 3 ..

Como se vê, nem RazorViewEngine nem WebFormViewEngine Implementar duas das "funções-chave", ao que parece, FileExists e IsValidPath. Estes são herdados de BuildManagerViewEngine, E sabe de uma coisa? Esses métodos são marcados como sealed..

Alguém que já tentou isso com o MVC 3 e talvez possa me levar na direção certa? Estou olhando para a fonte do MVC 3 agora há um bom tempo, mas não consigo ver nenhuma maneira de fazer isso ..

Foi útil?

Solução

Agora me sinto um pouco estúpido, parece que carreguei o VPP tarde demais .. tinha isso em Application_Start, mas quando eu o movi para o meu PreApplicationStartMethod Em vez disso, foi usado pelo ViewEngine. (Portanto, nenhuma implementação de ViewEngine parece ser necessário, Wey!)

O problema agora é que, quando tento chegar a uma visão que é armazenada como um recurso, posso baixá -lo em vez de renderizá -lo. Mas isso é algo diferente disso!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top