3

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

我在直接复制到 Orchard 时遇到的主要问题是,我利用 MVC 3 中的布局层次结构为相关页面指定相同的父布局,而这些页面又可能有自己的父布局,依此类推.

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

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

谢谢!-J

4

1 回答 1

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 提倡的那种倒置的母版页式布局系统。相反,您使用形状及其替代物来获得相似的结果,但观点是不同的,因为形状被添加到嵌套容器中,而不是包含的对象指定它们插入的内容。

于 2012-07-28T10:44:54.310 回答