gpt4 book ai didi

Sitecore Axes.IsDescendantOf/Axes.IsAncestorOf - 包括在内?

转载 作者:行者123 更新时间:2023-12-03 22:15:11 25 4
gpt4 key购买 nike

是否有我遗漏的原因或某些原因让 Sitecore 为 trueItem.Axes.IsDescendantOf() 返回 Item.Axes.IsAncestorOf()

var test =
Sitecore.Context.Database.GetItem("{862B466A-079B-40E7-8661-FC064EC28574}");
Response.Write(test.Axes.IsAncestorOf(test));
Response.Write(test.Axes.IsDes(test));

//True
//True



编辑 :任何人可能会偶然发现此答案以寻找非包容性 IsAncestorOfIsDescendantOf ,下面是几个示例,我需要在新闻类别的多选字段中找到最高级别的元素。
newsCategories
.Where(x => newsCategories
.Any(y => x != y && !x.Axes.IsDescendantOf(y)))


newsCategories
.Where(x => newsCategories
.Any(y => x != y && !x.Axes.IsDescendantOf(y)))

最佳答案

我不得不相信 Sitecore 中的方法应该将 而不是 命名为 IsAncestorOfIsDescendantOf 。根据您的发现,并快速查看 Sitecore 代码,这些方法应该真正命名为 IsAncestorOrSelfIsDescendantOrSelf

对于这个例子,

Sitecore.Data.Items.Item x = //some item;
Sitecore.Data.Items.Item y = //some item;
x.Axes.IsAncestorOf(y)
x.Axes.IsDescendantOf(y)
IsAncestorOf 方法正在比较 x.ID == y.ID 。然后它将继续将 x.ID 与 y 的父级的 ID 进行比较,这就是它应该命名为 IsAncestorOrSelf 的原因。
IsDescendantOf 方法比较 LongIDx 路径是否以 LongIDy 路径开头。由于字符串总是以相同的字符串开头,因此我们再次看到此方法应命名为 IsDescendantOrSelf

仅供引用, LongID 路径看起来像这个 /{11111111-1111-1111-1111-111111111111}/{0DE95AE4-41AB-4D01-9EB0-67441B7C2450}/{110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9},我怀疑它被使用而不是 /sitecore/content/home 是为了避开 sitecore 允许 sibling 具有相同名称的事实。

关于Sitecore Axes.IsDescendantOf/Axes.IsAncestorOf - 包括在内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10504570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com