5

RenderComponentPresentation() に基づいて情報をページの最初に出力する Razor コードを含む Tridion 2011 のページ テンプレートがあります。ページではなくコンポーネントに最初のマークアップが含まれているため、その前に他のマークアップはありません。パブリッシュされた出力の最初の RenderComponentPresentation の前に少なくとも 1 文字を配置しない限り、テンプレートはプレゼンテーションのレンダリングを拒否します。

したがって、たとえば、これがレイアウト TBB にあるすべての場合、これは機能します (私の実際のコードでは、tcm はもちろん本物です)。

<
@RenderComponentPresentation("tcm:mytcm","tcm:myothertcm")

しかし、これはしません

@RenderComponentPresentation("tcm:mytcm","tcm:myothertcm")

1 つ目は "<" で始まるコンポーネントの内容を出力しますが、2 つ目は何もしません。ページ テンプレートの先頭に直接マークアップを配置したくありません。最初にコンポーネントにしたいのです。出来ますか?

4

3 に答える 3

3

最新バージョンの Razor Mediator (1.2) を使用して Template Builder で簡単なテストを行ったところ、問題を再現できませんでした。

多分あなたは試すことができます:

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

追加のマークアップは表示されませんが、メディエーターをだまして目的の操作を実行させる可能性があります (ただし、前述のように、問題を再現できないため、再現できるかどうかを確認できません)。

于 2012-06-27T14:42:45.933 に答える
2

通常、Razor を使用すると、ページ上のすべてのコンポーネント プレゼンテーションを反復処理します。現在、私は

@foreach(var cp in ComponentPresentations){
   @cp.RenderComponentPresentation()
}

これにより、定義済みのスキーマやテンプレートに関係なく、ページ上のすべてのコンポーネントがレンダリングされます。ただし、あなたの問題は他の場所の問題を示唆しています。ページ テンプレートが生成する出力の種類 (ここで説明する Razor TBB を含む複合テンプレートを使用するページ テンプレートに注意してください)。.aspx、HTML、またはその他ですか? そして、コンポーネント テンプレートの出力は何ですか? それは HTML フラグメントですか、それとも何か他のものですか?

構文に関する限り、テンプレートの呼び出し以外は問題ありません。

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

ただし、このコードは HTML タグ内で使用された場合にのみ機能するように感じますが、それはただの予感です。

于 2012-06-27T14:06:31.483 に答える
1

ちょっとしたハックですが、試しましたか:

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

また

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

免責事項: Razor メディエーターは実際には使用されていません。ただかみそり。

于 2012-06-27T14:10:47.570 に答える