2012-07-27 133 views
3

我试图将现有的ASP.NET MVC 3网站迁移到Orchard,因此我可以继续构建网站,同时利用Orchard提供的扩展功能。我试图将整个现有网站封装到一个Orchard模块中,这样我就可以保持现有的所有功能,并继续添加功能,或根据需要将旧功能移植到新模式中。Orchard页面嵌套布局

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

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

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

谢谢! -J

回答

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推动的那种倒转的主页式布局系统。相反,您使用形状及其交替来获得相似的结果,但视角不同于将形状添加到嵌套容器中,而不是包含的对象指定它们插入的内容。

+0

谢谢,我将开始使用您提供的信息Google搜索。你有没有推荐理解如何在Orchard中编码形状和布局的资源? – jeremyalan 2012-07-30 14:37:05

+0

当然:http://docs.orchardproject.net/Documentation/Accessing-and-rendering-shapes和http://docs.orchardproject.net/Documentation/Anatomy-of-a-theme或http://docs.orchardproject .NET /文档/写作-A-新主题 – 2012-07-30 16:55:16