4

これは、SDL Tridion 2011 SP1 を使用した Razor テンプレートに関するものです。

SiteEdit UI 2012 を有効にするために、CT 内にタグを導入しています。

tcdl:ComponentFieldコンポーネントのネストされた埋め込みフィールド内に存在するフィールドのタグを作成できるかどうかを尋ねたいと思います。

ここでは、多値埋め込みフィールドとして「footer_links」を持つコンポーネントがあり、各「footer_links」アイテムには多値埋め込みフィールド「sub_nav」があり、sub_nav.image を読み込んでスイートを編集可能にします。

しかし、次のことを行うと、コンテンツのインライン編集を有効にすると、TBB が次のエラーをスローします

エラー : オブジェクト参照がオブジェクトのインスタンスに設定されていません。Tridion.SiteEdit.Templating.EnableInlineEditingUI.FindItemFieldXPath (文字列 [] パーツ、Int32 currentIndex、ItemFields フィールド) で

誰でも何か考えがありますか?これを実装できたら?はいの場合、次のコードの何が問題になっていますか?

また、同じように ComponentLink 内のフィールドを読み取ることはできますか? 助けていただければ幸いです。

@for (int i=0; i<Fields.footer_links.Count; i++) {
/* "outer_image" is compLink and it workds fine */
   @if(Fields.footer_links[i].outer_image != null) {
   <tcdl:ComponentField name="Fields.footer_links[@i].outer_image">
    <img src="@Fields.footer_links[i].outer_image.ID"/>
  </tcdl:ComponentField>              
  }

  /* "sub_nav" is Mutlivalued Embedded field and "image" is field inside it */

   @for (int j=0; j<Fields.footer_links[i].sub_nav.Count; j++) {
   <li>
   @if(Fields.footer_links[i].sub_nav[j].image != null) {
   <tcdl:ComponentField name="Fields.footer_links[@i].sub_nav[@j].image">
      <img src="@Fields.footer_links[i].sub_nav[j].image.ID" />
    </tcdl:ComponentField>
   }
}
}
4

3 に答える 3

2

このようにしてみましたか

    @foreach(dynamic com in Fields.footer_links) {
/* "outer_image" is compLink and it workds fine */
   @if(com.outer_image != null) {
   <tcdl:ComponentField name="com.Fields.outer_image">
    <img src="@com.Fields.outer_image.ID"/>
  </tcdl:ComponentField>              
  }

  /* "sub_nav" is Mutlivalued Embedded field and "image" is field inside it */

   @foreach (dynamic subCom in com.sub_nav) {
   <li>
   @if(subCom.image != null) {
   <tcdl:ComponentField name="subCom.Fields.image">
      <img src="@subCom.Fields.image.ID" />
    </tcdl:ComponentField>
   }
}
}

なぜなら、以下の行 @i は Int 型のように値を変換していないようです

 <tcdl:ComponentField name="Fields.footer_links[@i].outer_image">
于 2012-08-29T15:11:02.040 に答える
1

tcdl タグの生成に問題があると思いますか?

これを解決するには、タグを生成するヘルパー メソッドを作成します。

public static MvcHtmlString SiteEditComponentField(this HtmlHelper helper, string id)

この拡張メソッドでは、タグと属性を含む書式設定された文字列を簡単に返すことができます。

于 2012-09-05T14:06:31.280 に答える
1

長いので、何を使用しているのかわかりませんが、dwt と同じように、かみそりメディエーターの組み込み関数を確実に使用できます。

String RenderComponentField(string fieldExpression, int fieldIndex)
String RenderComponentField(string fieldExpression, int fieldIndex, bool renderTcdlTagOnError)
String RenderComponentField(string fieldExpression, int fieldIndex, string value)
String RenderComponentField(string fieldExpression, int fieldIndex, string value, bool renderTcdlTagOnError)
String RenderComponentField(string fieldExpression, int fieldIndex, bool htmlEncodeResult, bool resolveHtmlAsRTFContent)
String RenderComponentField(string fieldExpression, int fieldIndex, bool htmlEncodeResult, bool resolveHtmlAsRTFContent, renderTcdlTagOnError)

ありがとう..

于 2013-01-28T21:14:14.473 に答える