8

これをレンダリングするコンポーネントテンプレートで、値が正常に表示される状況に陥っています${test}。別のテンプレートがこのコンポーネントを呼び出し@@RenderComponentPresentation(Component.ID, MyFirstTemplate)@@、この時点で使用しているテンプレート${test}が評価されているため、問題が発生します。コンポーネント上またはパッケージ内にそのようなアイテムはありません。それは何も評価しません。

  • Component フィールドの値を読み取る Component Template One があります (次を含む: ${test})

    • このテンプレートは正常にレンダリングされ、「${test}」が返されます
  • これで、呼び出すコンポーネント テンプレート 2 ができました。@@RenderComponentPresentation(Component.ID, ComponentTemplateOne.ID)@@

    • これは、${test}now が保持される代わりに評価される場所であり、${test}その名前の変数またはコンポーネント フィールド名が見つからないため、 から "" に移動します。
  • コンポーネント テンプレート 2 は、同じ方法でコンポーネント テンプレート 3 によって呼び出されます。@@RenderComponentPresentation(Component2.ID, ComponentTemplateTwo.ID)@@

    • ${test}はすでに評価され、コンポーネント テンプレート 2 で失われているため、「I am still left with ""」という結果にはなりません${test}

私が試してみました:

  • @@RenderComponentField('myField', 0, False, False)@@
  • @@RenderComponentField('myField', 0, True, False)@@
  • @@RenderComponentField('myField', 0, False, True)@@

運がない。

以下は私の回避策であり、うまくいくようです:

  • 開き中括弧と閉じ中括弧の両方の前に「\」を配置する$\{test\}
  • 最後のテンプレート (ページまたはコンポーネント) が実行された後、必ず「\」を削除する必要があります。
  • 「${test}」を受け取り、次の処理を行う C# TBB を用意しました。
    • ${test}初期テンプレートのを に変換$\{test\}し、ページ テンプレートの C# TBB を変換して、初期値の に戻します${test}

これが起こらないようにする方法、またはこれを機能させるために私がしていることを避ける方法はありますか?

4

1 に答える 1

4

このリンクを試したことがありますか?このリンクでできるはずです

@@"$" + "{" + "test" + "}"@@
于 2012-09-13T15:15:19.240 に答える