有没有一种方法可以创建包含1种内容类型的子项目的无序列表

时间:2019-02-06 13:36:29

标签: list html-lists 2sxc subitem

我想创建一个像这样的组织图: https://codepen.io/bernardoantunes/pen/inrbh使用2sic内容。

我想用以下字段创建内容类型“ organogram”: 标题为字符串 父作为实体(组织图类型) 描述为字符串 链接为超链接

使用这种内容类型,我会在可以创建子元素的位置添加一些元素。 例如: - 根 -子级1(在“父级”字段中选择了“根”) -子级2(在“父级”字段中选择了“根”) -子3(在“父”字段中选择了子2)

这可以使用2sic内容应用来完成吗?

我创建了内容类型并添加了一些元素。创建一个剃刀模板,然后给出一个错误。 运算符'=='不能应用于System.Collections.Generic.List和ToSic.SexyContent.DynamicEntity类型的操作数

剃刀模板:

@using Connect.Koi;
@{
var first = AsDynamic(Data["Default"]).First();
var all = AsDynamic(Data["Default"]);
}
<div>@first.Title</div>  
var children = all.Where(x => x.parent == first).ToList();
<div>@children.Count</div>

1 个答案:

答案 0 :(得分:0)

基本上,AsDynamic(...)创建包装的实体对象,而...parent为您提供相关项的列表(因为它可能有多个父项)。如果这是您要使用的代码,我建议1件事。

  1. .parent(可能应该是.Parent)上使用[0]或.FirstOrDefault(),因此它是.Parent.FirstOrDefault() == first-记住要通过@using System.Linq启用LINQ
  2. 请勿比较AsDynamic对象,因为它们将是不同的对象。最好使用.EntityId或其他方式比较ID。

因此,您得到的比较可能是.Parent[0].EntityId == first.EntityId

我不喜欢您的解决方案的想法是,默认列表中的第一项将以某种方式成为重要的。这感觉不对,但是我不知道您的整个解决方案...