有没有办法创建一个无序列表,其中的子项来自 1 content-type
Is there a way to create a unordered list with subitems from 1 content-type
我想创建一个器官图,例如:
https://codepen.io/bernardoantunes/pen/inrbh 使用 2sic 内容。
我想创建一个包含以下字段的 content-type 'organogram':
标题为字符串
Parent 作为实体(类型为组织图)
描述为字符串
Link 作为超链接
使用这个 content-type 我会添加一些可以创建 child 元素的元素。
例如:
- 根
- Child 1(在 Parent 字段中选择根)
- Child 2(在 Parent 字段中选择根)
- Child 3(在 Parent 字段中选择了 Child 2)
可以用2sic content App实现吗?
我创建了 content-type 并添加了一些元素。创建了一个剃须刀模板,然后它给出了一个错误。
运算符“==”不能应用于 System.Collections.Generic.List 和 ToSic.SexyContent.DynamicEntity
类型的操作数
Razor 模板:
@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>
基本上 AsDynamic(...)
创建包装的实体对象,而 ...parent
为您提供相关项目的列表(因为它可能有多个父项)。如果这是您要使用的代码,我建议您做一件事。
- 在
.parent
(可能应该是 .Parent)上使用 [0] 或 .FirstOrDefault() 所以它是 .Parent.FirstOrDefault() == first
- 记得通过 @using System.Linq
[= 启用 LINQ 25=]
- 不要比较 AsDynamic 对象,因为它们是不同的对象。最好使用 .EntityId 或其他方式比较 id。
所以你得到的比较可能是 .Parent[0].EntityId == first.EntityId
。
我不喜欢你的解决方案的想法是默认列表中的第一项在某种程度上是重要的。这感觉不对,但我不知道你的整个解决方案...
我想创建一个器官图,例如: https://codepen.io/bernardoantunes/pen/inrbh 使用 2sic 内容。
我想创建一个包含以下字段的 content-type 'organogram': 标题为字符串 Parent 作为实体(类型为组织图) 描述为字符串 Link 作为超链接
使用这个 content-type 我会添加一些可以创建 child 元素的元素。 例如: - 根 - Child 1(在 Parent 字段中选择根) - Child 2(在 Parent 字段中选择根) - Child 3(在 Parent 字段中选择了 Child 2)
可以用2sic content App实现吗?
我创建了 content-type 并添加了一些元素。创建了一个剃须刀模板,然后它给出了一个错误。 运算符“==”不能应用于 System.Collections.Generic.List 和 ToSic.SexyContent.DynamicEntity
类型的操作数Razor 模板:
@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>
基本上 AsDynamic(...)
创建包装的实体对象,而 ...parent
为您提供相关项目的列表(因为它可能有多个父项)。如果这是您要使用的代码,我建议您做一件事。
- 在
.parent
(可能应该是 .Parent)上使用 [0] 或 .FirstOrDefault() 所以它是.Parent.FirstOrDefault() == first
- 记得通过@using System.Linq
[= 启用 LINQ 25=] - 不要比较 AsDynamic 对象,因为它们是不同的对象。最好使用 .EntityId 或其他方式比较 id。
所以你得到的比较可能是 .Parent[0].EntityId == first.EntityId
。
我不喜欢你的解决方案的想法是默认列表中的第一项在某种程度上是重要的。这感觉不对,但我不知道你的整个解决方案...