我一直在剖析Orchard CMS渲染和 View 引擎,以了解其组合方式。我发现RenderBody和RenderSection都没有被调用过。据我了解,Razor View 引擎需要调用一个或另一个。

解决了必须调用RenderBody或RenderSection或Razor引发异常的要求,该怎么办?

是否存在自定义 View 引擎(ThemeAwareViewEngine)?如果是这样,它将如何处理解析Razor语法以生成内容?

谢谢。

最佳答案

实际上是另一回事。 Razor本身不需要将RenderBody称为具有此要求的RazorViewEngine。肯定会有另一个使用Razor的 View 引擎具有完全不同的工作方式。看一看https://github.com/Antaris/RazorEnginehttps://github.com/Buildstarted/RazorSharp,我还写了一个Markdown View 引擎,该引擎使用剃刀来实现一些简单的布局。

通过阅读源代码,看起来他们好像已经创建了一些自定义 View 引擎。他们的RazorViewEngine用自己的自定义WebViewPage替换了剃刀生成的文件的基类,该自定义Display具有Zone作为别名的方法LayoutAwareViewEngine。这使他们可以呈现 subview ,而且DocumentZone中似乎有几种类型的区域,例如ContentZone,ojit_code等。

因此,最后他们做了很多自定义代码。

10-04 15:36