Orchard Core 主题视图中 liquid 和 cshtml 页面的区别

Difference between liquid and cshtml page in themes views in Orchard Core

在 OrchardCore.Themes 的 TheAdmin 主题中,我在 Views 文件夹 Layout.cshtml 和 Layout-Login.cshtml.

中看到

在 TheAgency 主题中,我在视图文件夹中看到 Layout.liquid。

我试图将我新创建的主题中视图文件夹中的 Layout.liquid 更改为 Layout.cshtml,当我 运行 它时,它仍然有效。

那么,Orchard Core 中主题中的 liquid 文件和 cshtml 文件有什么区别,我什么时候应该使用一个而不是另一个?

它们是您可以使用的两种不同的视图引擎。 Razor/cshtml 对 ASP.NET 开发人员来说更熟悉,但它的视图是经过编译的。 Liquid 是 JavaScript 世界中非常知名的模板语言,它对 Orchard 来说具有巨大的优势,即它的视图不会被编译。这样可以将它们存储在数据库中,在不重新启动或触发编译的情况下更改它们等。

作为模块作者,您可以选择,并且应该使用您最喜欢的那个。然而,有时候,如果出于某种原因必须动态创建视图,Liquid 是唯一的选择。

之所以 liquid 是内容可编辑模板的唯一选择,是因为 razor 模板可以完全访问您可以在 @{ } 块中用 C# 代码编写的任何内容。然后,这仅受授予 Web 应用程序的执行权限的限制。因此,razor 模板可能存在安全风险,允许最终用户在 razor 中编写模板。

对于液体模板,您只能调用渲染模板的主机提供的液体过滤器。