Представления ServiceStack Razor из нескольких каталогов модулей

Я начинаю новый проект, в котором идея состоит в том, чтобы организовать структуру файла / папки проекта в разные модули (.csproj) и, наконец, после развертывания эти модули будут загружены в один AppHost MainModule (эти подмодули будут действовать как плагины),

Тем не менее, для лучшего управления физическими файлами (SVN/VCS) и эффективной организации файлов моего проекта эти модули будут поддерживаться как отдельные проекты в SVN. Идея состоит в том, чтобы иметь представления, активы и т. Д., Специфичные для каждого модуля, в отдельной области каталога модулей. (См. Скриншот).

  • Основной модуль
    • SubModuleOne
      • Просмотры
        • ModuleOneDefault.cshtml
    • SubModuleTwo
      • Просмотры
        • ModuleTwoDefault.cshtml
    • Просмотры
      • Общий
        • _Layout.cshtml
      • Hello.cshtml

Файлы, специфичные для модуля, будут скопированы в качестве действия после сборки в корневой каталог проекта, а не в /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
Другие вопросы по тегам