首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Axes.IsDescendantOf / Axes.IsAncestorOf -包括?

Axes.IsDescendantOf / Axes.IsAncestorOf -包括?
EN

Stack Overflow用户
提问于 2012-05-08 18:45:36
回答 2查看 1.5K关注 0票数 4

是否有什么原因或什么原因让我错过了塞特罗尔返回trueItem.Axes.IsDescendantOf()Item.Axes.IsAncestorOf()

代码语言:javascript
复制
var test =
Sitecore.Context.Database.GetItem("{862B466A-079B-40E7-8661-FC064EC28574}");  
Response.Write(test.Axes.IsAncestorOf(test));  
Response.Write(test.Axes.IsDes(test));

//True

//真

编辑:任何可能无意中找到这个答案的人,在下面的几个例子中,我需要在新闻类别的多选择字段中找到最高级别的元素。

代码语言:javascript
复制
newsCategories
   .Where(x => newsCategories
                       .Any(y => x != y && !x.Axes.IsDescendantOf(y)))

代码语言:javascript
复制
newsCategories
   .Where(x => newsCategories
                       .Any(y => x != y && !x.Axes.IsDescendantOf(y)))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-08 20:24:02

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

对于这个例子,

代码语言:javascript
复制
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方法比较xLongID路径是否从yLongID路径开始。由于字符串总是以相同的字符串开头,我们再次看到这个方法应该被命名为IsDescendantOrSelf

FYI,一个LongID路径看起来像这个/{11111111-1111-1111-1111-111111111111}/{0DE95AE4-41AB-4D01-9EB0-67441B7C2450}/{110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9},我怀疑它是用来代替/sitecore/content/home的,目的是为了避开这样一个事实,即sitecore允许兄弟姐妹使用相同的名字。

票数 10
EN

Stack Overflow用户

发布于 2012-05-08 19:00:00

你在塞特罗尔的逻辑中碰到了一个“故障安全”。这是因为你在自我检查同一个项目。您需要使用两个不同的项来执行此操作才能产生任何结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10504570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档