Templates RenderComponentPresentation在任何其他标记Tridion页面之前

Templates RenderComponentPresentation在任何其他标记Tridion页面之前,templates,razor,tridion,Templates,Razor,Tridion,我在Tridion 2011中有一个页面模板,其中Razor代码根据RenderComponentPresentation()打印信息,作为页面中的第一件事。前面没有其他标记,因为包含初始标记的是组件,而不是页面。除非在发布的输出中的第一个RenderComponentPresentation之前至少放置一个字符,否则模板将拒绝呈现任何演示文稿 因此,例如,如果这是布局TBB中的全部内容,那么这是有效的(在我的真实代码中,TCM当然是真实的): 第一个打印组件的内容,前面是“,通常使用Razor

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

因此,例如,如果这是布局TBB中的全部内容,那么这是有效的(在我的真实代码中,TCM当然是真实的):


第一个打印组件的内容,前面是“,通常使用Razor在页面上迭代所有组件演示文稿,现在我正在使用它

@foreach(var cp in ComponentPresentations){
   @cp.RenderComponentPresentation()
}
这将呈现页面上的每个组件,而不考虑预定义的架构或模板。但是,您的问题在其他地方表明了一个问题。您的页面模板会生成什么样的输出(请注意,它是使用复合模板的页面模板,而复合模板又包括您在此处描述的Razor TBB).是.aspx、HTML还是其他格式?组件模板的输出是什么?是HTML片段还是其他格式

就语法而言,除了模板调用之外,这应该还可以:

@RenderComponentPresentation("tcm:x-xxx-xx", "tcm:xx-xxx-xx")

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

有点不对劲,但您是否尝试过:

<text>@RenderComponentPresentation("tcm:x-xxx-xx", "tcm:xx-xxx-xx")</text>

免责声明:未真正使用Razor mediator。仅使用Razor。

我刚刚使用最新版本的Razor mediator(1.2)在Template Builder中进行了快速测试,无法复制您的问题

也许你可以试试:

<text></text>
@RenderComponentPresentation("tcm:mytcm","tcm"myothertcm")

@RenderComponentPresentation(“tcm:mytcm”、“tcm”MyThermTCM”)

它不会呈现任何附加标记,但可能会诱使中介执行您想要的操作(尽管如我所说,我无法复制您的问题,因此无法验证它是否会执行)。

我以前从未使用过Razor中介,因此这是一次冒险,但您可以尝试以下方法:@{RenderComponentPresentation(“tcm”,“tcm”)}我在我的帖子中有这个,但是为Html.Raw版本编辑了它。如果你不能复制这个问题,我希望我知道为什么,这样我就可以做我想做的事情,而不让它变得不可靠。然而,无论如何,一个标签似乎是不够的。它需要一个角色。。。所以在它什么都不做之前,而在它开始工作之前,a或甚至只是“a”或“.”或“ ”。不确定这是否重要,因为这一切都必须在C#驱动的aspx页面的页面声明之前进行。即使在我的本地主机上,在页面声明之前有一些东西似乎不会出现故障。。。我不会把这样的东西放进prod。
<text>@RenderComponentPresentation("tcm:x-xxx-xx", "tcm:xx-xxx-xx")</text>
@Html.Raw(RenderComponentPresentation("tcm:x-xxx-xx", "tcm:xx-xxx-xx"))
<text></text>
@RenderComponentPresentation("tcm:mytcm","tcm"myothertcm")