RenderComponentPresentation在任何其他标记之前Tridion Razor Page

use*_*652 5 templates razor tridion

我在Tridion 2011中有一个页面模板,其中Razor代码基于RenderComponentPresentation()打印信息,作为页面中的第一件事.之前没有其他标记,因为组件而不是页面包含初始标记.除非我在发布的输出中的第一个RenderComponentPresentation之前放置至少一个字符,否则模板拒绝呈现任何演示文稿.

所以,例如,如果这就是布局TBB中的所有内容(这在我的实际代码中,tcms当然是真实的):

<
@RenderComponentPresentation("tcm:mytcm","tcm:myothertcm")
Run Code Online (Sandbox Code Playgroud)

但事实并非如此

@RenderComponentPresentation("tcm:mytcm","tcm:myothertcm")
Run Code Online (Sandbox Code Playgroud)

第一个打印前面带有"<"的组件的内容,而第二个打不出任何内容.我不希望在页面模板的开头直接有任何标记,我希望第一件事就是组件.可能吗?

MDa*_*MDa 2

通常,使用 Razor,您可以迭代页面上的任何和所有组件演示,现在我正在使用

@foreach(var cp in ComponentPresentations){
   @cp.RenderComponentPresentation()
}
Run Code Online (Sandbox Code Playgroud)

这将呈现页面上的每个组件,无论预定义的架构或模板如何。但是,您的问题表明其他地方存在问题。您的页面模板会生成什么类型​​的输出(请注意它的页面模板使用复合模板,而复合模板又包含您在此处描述的 Razor TBB)。是 .aspx、HTML 还是其他?组件模板的输出是什么?它是一个 HTML 片段,还是其他什么?

就语法而言,除了模板调用之外,这应该没问题:

@RenderComponentPresentation("tcm:x-xxx-xx", "tcm:xx-xxx-xx")
Run Code Online (Sandbox Code Playgroud)

不过,我有一种感觉,这段代码只有在 HTML 标签中使用时才有效,但这只是一种预感。