0

我想 使用 2sic Content创建一个器官图,例如: https ://codepen.io/bernardoantunes/pen/inrbh。

我想创建一个包含以下字段的内容类型“器官图”:标题为字符串父实体(类型为器官图)描述为字符串链接为超链接

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

这可以使用 2sic content App 完成吗?

我创建了内容类型并添加了一些元素。创建了一个剃刀模板,然后它给出了一个错误。运算符“==”不能应用于 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>
4

1 回答 1

0

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

  1. .parent(可能应该是 .Parent)上使用 [0] 或 .FirstOrDefault() 所以它.Parent.FirstOrDefault() == first- 记得启用 LINQ@using System.Linq
  2. 不要比较 AsDynamic 对象,因为它们将是不同的对象。更好地使用 .EntityId 或其他东西比较 id。

所以你得到的比较可能是.Parent[0].EntityId == first.EntityId.

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

于 2019-02-11T16:37:40.993 回答