Razor模板与SiteEdit UI 2012 OnTrion 2011

Razor模板与SiteEdit UI 2012 OnTrion 2011,razor,tridion,tridion-2011,siteedit,Razor,Tridion,Tridion 2011,Siteedit,这是关于SDL Tridion 2011 SP1的Razor模板 为了启用SiteEdit UI 2012,我们在CTs中引入了标记 我想问一下,是否可以为位于组件嵌套嵌入字段中的字段创建tcdl:ComponentField标记 这里我们有一个组件,其中“footer\u links”作为多值嵌入字段,同样,每个“footer\u links”项都有一个多值嵌入字段“sub\u nav” 并希望读取sub_nav.image以使其可编辑 但当我执行以下操作时,为内容启用内联编辑TBB抛出以下错

这是关于SDL Tridion 2011 SP1的Razor模板

为了启用SiteEdit UI 2012,我们在CTs中引入了标记

我想问一下,是否可以为位于组件嵌套嵌入字段中的字段创建
tcdl:ComponentField
标记

这里我们有一个组件,其中“footer\u links”作为多值嵌入字段,同样,每个“footer\u links”项都有一个多值嵌入字段“sub\u nav” 并希望读取sub_nav.image以使其可编辑

但当我执行以下操作时,为内容启用内联编辑TBB抛出以下错误

错误: 对象引用未设置为对象的实例。 在Tridion.SiteEdit.Templateing.EnableInlineEditingUI.FindItemFieldDXPath(字符串[]部分,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>
   }
}
}

@for(inti=0;i你能这样试一下吗

    @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>
   }
}
}
@foreach(字段中的动态com.footer\u链接){
/*“外部图像”是compLink,工作正常*/
@if(com.outer_image!=null){
}
/*“sub_nav”是多值嵌入字段,“image”是其中的字段*/
@foreach(com.sub_nav中的动态子com){
  • @if(subCom.image!=null){ } } }
  • 因为,下面的行@i似乎不像Int type那样转换值

     <tcdl:ComponentField name="Fields.footer_links[@i].outer_image">
    

    我假设您在生成tcdl标记时遇到问题

    要解决此问题,您可以创建一个帮助器方法来为您生成标记:

    公共静态MvcHtmlString SiteEditComponentField(此HtmlHelper帮助程序,字符串id)
    

    在这个扩展方法中,您可以很容易地返回带有标记和属性的格式化字符串。

    这是一个很长的时间,所以不确定您使用的是什么,但是您当然可以使用razor mediator内置函数来处理类似于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)
    

    谢谢..

    这不起作用,代码行“”很好地解决了问题,但问题是在以后的情况下,即“即使在这种情况下,当我检查输出时,我看到了”,等等..但错误仍然存在