ASP.NET MVC 3 RC и пользовательский ViewEngine, чтобы разрешить внешне загруженные представления
-
27-09-2019 - |
Вопрос
Я немного играю с разделить MVC-сайт на несколько собраний (побежал в некоторых проблемы ранее).
Теперь у меня почти все работает, получил главный проект MVC, который нагружает на любые внешние сборки, он может найти. Внешние сборки в основном внешние область. Отказ Когда у меня было его копировать представления и Web.config до областей основных сайтов-папку, все работало просто хорошо. Теперь, что папка, скорее всего, начнет становиться немного раздутым через некоторое время, поэтому я подумал, что постараюсь добавить в виды как ресурсы в районе-монтаже, см. Как это работает.
Создал свой собственный VirtualPathProvider
И мой собственный VirtualFile
, зарегистрировал их с HostingEnvironment
Мышление все было хорошо. Оказывается, он использует только VirtualPathProvider
добавлено в то HostingEnvironment
при первой нагрузке, а не по следующим нагрузкам ViewEngine
.. хорошо в порядке, нашел несколько примеров того, как вы могли бы обойти это, реализуя свои собственные ViewEngine
использовать свою собственную VPP. Но да, это не кажется работоспособным решением для MVC 3 ..
Как оказывается, ни один RazorViewEngine
ни WebFormViewEngine
Реализуйте два из «Основные функции», похоже, FileExists
а также IsValidPath
. Отказ Они унаследованы от BuildManagerViewEngine
, и знаешь, что? Эти методы отмечены как sealed
..
Любой, кто пробовал это с MVC 3, и, возможно, может подтолкнуть меня в правильном направлении? Я уставился на источник MVC 3 на некоторое время, но я просто не вижу никакого способа сделать это ..
Решение
Теперь я чувствую себя немного глупо, похоже, я слишком поздно загрузил VPP. Application_Start
, но когда я перевел его на мой PreApplicationStartMethod
вместо этого он был использован ViewEngine
. Отказ (Так что нет реализации ViewEngine
кажется, нужен, Ваши!)
Проблема сейчас в том, что когда я пытаюсь добраться до вида, который хранится как ресурс, я готовлю его, вместо того, чтобы он оказал. Но это что-то отличное от этого!