如何使每个多列表项在 Sitecore 中可编辑

How to make each Multilist Item editable in Sitecore

MultiListField 中的一些项目必须显示在 html 中,但在 2 列中,如:

Item1 Item2
Item3 Item4

<div id="menu-section" runat="server">
 <div class="clearfix">      
    <div class="col-xs-6">
      <p>Item1 Name</p>
    </div>
    <div class="col-xs-6">
      <p>Item2 Name</p>
    </div>      
 </div>
 <div class="clearfix">      
    <div class="col-xs-6">
      <p>Item3 Name</p>
    </div>
    <div class="col-xs-6">
      <p>Item4 Name</p>
    </div>      
 </div>
</div>

内容作者应该能够从体验编辑器中编辑每个项目。
如果它是单列,我将使用 asp:Repeatersc: 控件来完成此操作。

所以,相反,我用字符串构建了 html 并在页面上呈现。

C#

StringBuilder sb = new StringBuilder();
sb.Append("<div class=\"clearfix\">");
.
.
..
menu-section.innerHtml = sb.ToString();

尽管项目已根据需要呈现,但我不知道如何使它们可编辑。

menu-section 包裹在 sc:EditFrame 中将只允许 add/remove/sorting 个项目,但不允许编辑每个项目。

任何想法,如何做到这一点?

我会回到你的中继器解决方案,并尝试使用嵌套中继器。

首先,将您的数据源放入项目列表列表中(例如,您可以使用集合的集合)。在您的情况下,每个内部列表将有 2 个项目(2 列)。

将此数据源绑定到您的外部转发器,它可以为它可以找到的每个条目(列表)生成 <div class="clearfix">.. </div>。在这个中继器中创建另一个内部中继器并将条目(内部列表 - 在您的情况下是 2 个项目的集合)绑定到它。您的内部转发器可以生成 <div class="col-xs-6"> 元素并使用 sc: control.

这将使它们可编辑,但您仍然需要编辑框 add/remove/sort...

使用 FieldRenderer 渲染字段:

sb.Append(FieldRenderer.Render(item1, "Name");

在 Page/Experience 编辑器上时,这会将项目呈现为可编辑。