Orchard如何在没有调用RenderBody的情况下逃脱?

时间:2012-03-22 16:03:23

标签: asp.net-mvc-3 razor orchardcms

我一直在剖析Orchard CMS渲染和视图引擎,以便了解它是如何组合在一起的。我发现RenderBody和RenderSection都没有被调用过。据我所知,Razor视图引擎需要调用其中一个。

什么是绕过必须调用RenderBody或RenderSection或Razor抛出异常的要求?

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

谢谢。

1 个答案:

答案 0 :(得分:2)

实际上是另一种方式。 Razor本身并不要求RenderBody被称为具有此要求的RazorViewEngine。肯定会有另一个使用Razor的视图引擎,它具有完全不同的工作方式。看看https://github.com/Antaris/RazorEnginehttps://github.com/Buildstarted/RazorSharp我还写了一个降价视图引擎,它使用剃刀进行一些简单的布局。

从阅读源代码看起来好像他们已经创建了一些自定义视图引擎。他们的RazorViewEngine用自己的自定义WebViewPage替换了剃刀生成的文件的基类,该自定义Display的方法ZoneLayoutAwareViewEngine的别名。这是允许他们渲染子视图的原因,好像DocumentZone中有几种类型的区域,例如ContentZone,{{1}}等等。

所以最后他们做了很多自定义代码。