我有一个解决方案,包括ServiceStack后端,常规设置(AppHost,ServiceInterface和ServiceModel),以及winforms应用程序和消费服务的iOS应用程序。
现在我想建立一个网络管理员,并且正在寻找有关如何构建此的建议。我想将apphost项目保持为小SS docs say
理想情况下,根级AppHost项目应保持轻量级 实现的自由。
所以我想将web-admin放在一个单独的项目中,包含所有.cshtml和内容等等。
这可能吗?不建议?有任何想法吗?
我能想到的一些替代方案是
cshtml
文件存在于AppHost项目中。这值得学习吗?答案 0 :(得分:1)
查看有关使用Compiled Razor Views和ServiceStack.Gap GitHub存储库的文档,了解如何创建利用编译剃刀视图的嵌入式ServiceStack解决方案。
答案 1 :(得分:1)
我想为初学者提供更完整的答案:
网站的项目必须启用剃刀。例如,它必须引用ServiceStack.Razor
,因此.cshtml
将编译。
正如@mythz所指出的那样,添加ServiceStack.Razor.BuildTask
来预编译剃刀文件。这是将LoadFromAssemblies
参数
在主AppHost中,指定在LoadFromAssemblies
的其他程序集中找到Razor文件,例如:
this.Plugins.Add(new RazorFormat { LoadFromAssemblies = { typeof(ActivityServer.Admin.AdminServices).Assembly } });
到目前为止,所有关于Razor .cshtml文件的内容都是如此。还包括服务,例如对于更复杂的视图,只需将其添加到AppHost() : base(...)
,或者如果您想要这些服务的前缀,请使用AppHost.RegisterService。
有一点需要指出的是,外部DLL中的Razor文件没有单独的命名空间,因此" hello.cshtml"在外部DLL中与主AppHost中具有相同名称的文件冲突。通过将所有cshtml文件(在外部dll中)放在子文件夹下,这将有所帮助,因为该文件夹将成为URL的一部分。