我尝试将内容项的HTML从控制器操作中呈现为字符串。从技术上讲,我只想获得"身体"它的一部分没有任何页眉/页脚的东西。我想这样做,所以我可以获得一个内容项呈现我想要的方式,然后将其显示为正常的果园页面或通过ajax请求内容项的HTML将其显示在JavaScript应用程序的div中。我不想手动渲染JavaScript中的所有内容,因为这会复制我已经做过的布局逻辑。我想重新使用大部分服务器端呈现,因此任何更改都会反映在我的正常果园页面和我的JavaScript页面中。我一直在深入研究代码并在各处搜索并且已经接近但不是一直在那里。
我找到了这些:
How to render shape to string?
在我的控制器中我有:
var shape = _contentManager.BuildDisplay(contentItem);
使用上述两种方法之一,我可以将该形状渲染为控制器中的HTML字符串。一切都是金色的。我正在获取该页面的主体并在JS中使用它。然后,我更改了一个展示位置文件:
< Place Parts_Common_Body ="内容:1" />
更改为:
< Place Parts_Common_Body =" / AsideFirst:1" />
身体在我正常的Orchard页面中移动到我想要的位置(AsideFirst),但是从使用上述两种方法检索到的HTML中消失了。
如果我在BuildDisplay调用之后查看shape.Content.Items,我可以看到正文的项目不再存在...为什么它不渲染所有区域?或者,我想一个更具体的问题是为什么BuildDisplay方法没有构建完整的形状?有没有办法让这项工作成功?
答案 0 :(得分:0)
我尝试了一百万种不同的东西,并最终实现了这一点。不确定我是否完全得到它,但我认为这个问题与我使用shape.Content的事实有关,我把东西移出Content区域。也许当我看到BuildDisplay方法返回的内容时,我只是没有看到一些新创建的区域实际上确实有我认为缺少的东西。显然,我需要了解有关区域和形状的更多信息......无论如何,我现在有一个名为“MainInfo”的新区域,我在一个放置文件中创建。我在BuildDisplay返回的主形状上获得MainInfo属性,并将shape.MainInfo传递给视图渲染代码,现在所有内容似乎都运行良好。