Представления ServiceStack Razor из нескольких каталогов модулей
Я начинаю новый проект, в котором идея состоит в том, чтобы организовать структуру файла / папки проекта в разные модули (.csproj) и, наконец, после развертывания эти модули будут загружены в один AppHost MainModule (эти подмодули будут действовать как плагины),
Тем не менее, для лучшего управления физическими файлами (SVN/VCS) и эффективной организации файлов моего проекта эти модули будут поддерживаться как отдельные проекты в SVN. Идея состоит в том, чтобы иметь представления, активы и т. Д., Специфичные для каждого модуля, в отдельной области каталога модулей. (См. Скриншот).
- Основной модуль
- SubModuleOne
- Просмотры
- ModuleOneDefault.cshtml
- Просмотры
- SubModuleTwo
- Просмотры
- ModuleTwoDefault.cshtml
- Просмотры
- Просмотры
- Общий
- _Layout.cshtml
- Hello.cshtml
- Общий
- SubModuleOne
Файлы, специфичные для модуля, будут скопированы в качестве действия после сборки в корневой каталог проекта, а не в /Views напрямую (если скопировано, то это приведет к ошибке в папке Views основного модуля).
Проблема заключается в том, как ServiceStack загружает и обрабатывает представления Razor из папки /Views, а все, что находится снаружи, считается страницами содержимого. Подробнее об этом, объяснил здесь...!
С VirtualFileSystem на месте я думал вслух, чтобы поддерживать определенные представления модуля в соответствующей папке "/ModuleOne/Views/", но вне корня "/Views". Каким-то образом это, похоже, не работает, пытаясь обратиться за помощью к тому, как этого можно достичь или обработать соответствующим образом.
PS: Помните, что все, что находится за пределами папки Views, является страницами содержимого, однако идея по-прежнему заключается в том, чтобы поддерживать в качестве папки Views, но в другой иерархии - надеясь, что функция ServiceStack Razor в любом случае хорошо обрабатывает вложенную структуру (DEEP), но в папке root /Views, а не из вся корневая папка проекта, т. е. "/".
Вопрос в том, может ли это быть достигнуто по умолчанию без какой-либо тяжелой работы? или я должен иметь собственную реализацию VirtualPathProvider и т. д.?
Мнение и мысли очень ценятся!
Спасибо!
1 ответ
Все виды Razor должны быть в /Views
папка, но в противном случае они могут быть любой иерархии, так как любые уровни вложенности не влияют на то, как они решаются, они просто должны иметь уникальное имя, например:
/Views
/SubModuleOne
ModuleOneDefault.cshtml
/SubModuleTwo
ModuleTwoDefault.cshtml
/Shared
_Layout.cshtml