如何在Sitecore

时间:2016-04-06 14:34:30

标签: asp.net sitecore sitecore8

MultiListField中的某些项目必须以html显示,但在2列中显示为:

  

第1项第2项   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只允许添加/删除/排序项目,但不能编辑每个项目。

有什么想法,怎么做?

2 个答案:

答案 0 :(得分:6)

使用FieldRenderer渲染字段:

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

在页面/体验编辑器上,这会将项目呈现为可编辑。

答案 1 :(得分:4)

我会回到你的转发器解决方案,尝试使用嵌套的转发器。

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

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

这将使它们可编辑,但您仍需要编辑框来添加/删除/排序...