多个模块目录的ServiceStack Razor视图

时间:2015-08-26 15:16:16

标签: servicestack servicestack-razor

我正在开始一个新项目,其中的想法是将项目文件/文件夹结构组织到不同的模块(.csproj),最后一旦部署,这些模块将加载到一个AppMost的MainModule(这些子模块将采取行动作为插件)。

但是,为了更好的物理文件管理(SVN / VCS)和有效组织我的项目文件,这些模块也将作为SVN中的单独项目进行维护。 想的是在每个模块的目录范围内拥有特定于每个模块的视图,资产等。 (Refer screenshot)

  • 主要模块
    • SubModuleOne
        • ModuleOneDefault.cshtml
    • SubModuleTwo
        • ModuleTwoDefault.cshtml
      • 共享
        • _Layout.cshtml
      • Hello.cshtml

模块特定文件将作为后期构建操作复制到根项目路径而不是/ Views直接复制(如果复制则将其与主模块的Views文件夹混淆)。

问题在于ServiceStack如何从/ Views文件夹加载和处理Razor视图,而外部的任何内容都被视为内容页面。 More about this, explained here...!

VirtualFileSystem到位的情况下,我正在大声思考将模块特定视图保存在相应的“/ ModuleOne / Views /”文件夹中,但在根“/ Views”之外。不知何故,这似乎不起作用,试图寻求帮助,以便如何实现或妥善处理。

PS:我知道Views文件夹之外的任何东西都是内容页面,但是这个想法仍然是作为Views文件夹维护但是在不同的层次结构中 - 希望ServiceStack Razor功能无论如何都能很好地处理嵌套(DEEP)结构但在root / Views文件夹中而不是从整个Project Root文件夹,即“/".

问题是,这可以在没有任何繁重工作的情况下实现吗?或者我应该有自定义的VirtualPathProvider实现等吗?

非常感谢意见和想法!

谢谢!

1 个答案:

答案 0 :(得分:2)

所有Razor视图必须位于/Views文件夹中,否则它们可以是任何层次结构,因为任何级别的嵌套都不会影响它们的解析方式,它们只需要具有唯一名称,例如:

/Views
   /SubModuleOne
        ModuleOneDefault.cshtml
   /SubModuleTwo
        ModuleTwoDefault.cshtml
   /Shared
       _Layout.cshtml