Orchard页面中的嵌套布局

时间:2012-07-27 20:21:30

标签: asp.net-mvc orchardcms

我正在尝试将现有的ASP.NET MVC 3网站迁移到Orchard,因此我可以继续构建网站,同时利用Orchard提供的扩展功能。我正在尝试将整个现有站点包装到Orchard模块中,因此我可以保持所有现有功能的完整性,并继续添加功能,或根据需要将旧功能移植到新范例中。

我直接复制到Orchard的主要问题是我利用MVC 3中的布局层次结构为相关页面指定相同的父布局,而后者可能有自己的父布局,等等。

当我在现有视图中复制时,我得到的错误是Layout是自定义Orchard WebPageView上的只读属性,但是当我将基本视图类型更改回标准MVC 3基本类型时,路径不会由于Module文件夹结构,我的视图匹配。

是否能够在Orchard中运行的站点不支持指定嵌套布局,或者是否存在我缺少的内置解决方法?

谢谢! -J

1 个答案:

答案 0 :(得分:2)

Orchard的布局系统早于MVC,并且工作方式略有不同。我担心你将不得不重构一些事情。 Orchard中的视图依赖于形状的概念,形状是类似于视图模型的动态对象。当渲染形状时,系统会寻找最合适的模板将其转换为html。大多数控制器操作返回一个形状结果,该结果将呈现为必须在布局形状中定义的内容区域的子项。可以通过为其指定替换来更改布局形状渲染(请参阅http://weblogs.asp.net/bleroy/archive/2010/12/14/switching-the-layout-in-orchard-cms.aspx)。

所以最后Orchard没有使用Razor / ASP.NET Web Pages / MVC3推出的那种倒置的母版页布局系统。相反,您使用形状及其替换来获得类似的结果,但视点是不同的,因为形状被添加到嵌套容器中,而不是包含对象指定它们插入的内容。