Sitecore/Glass Mapper:如何按内容树的顺序返回查询
我们有一个站点,其中包含多个查询,用于查询内容项的直接子项。我们只需要按照孩子们在内容树中出现的顺序对他们进行排序 我们使用的是玻璃贴图器,我们的集合属性如下所示:Sitecore/Glass Mapper:如何按内容树的顺序返回查询,sitecore,glass-mapper,Sitecore,Glass Mapper,我们有一个站点,其中包含多个查询,用于查询内容项的直接子项。我们只需要按照孩子们在内容树中出现的顺序对他们进行排序 我们使用的是玻璃贴图器,我们的集合属性如下所示: [SitecoreQuery(“/sitecore/content/Global/Team Members/Categories/*”) 公共IEnumerable类别{get;set;} 上面的属性类别以alpha顺序返回子项,但在某些情况下似乎有点随机 知道如何设置查询以按内容树的顺序拉入吗?Scott 我相信Glass正在对
[SitecoreQuery(“/sitecore/content/Global/Team Members/Categories/*”)
公共IEnumerable类别{get;set;}
上面的属性类别以alpha顺序返回子项,但在某些情况下似乎有点随机
知道如何设置查询以按内容树的顺序拉入吗?Scott
我相信Glass正在对这些SitecoreQueries使用快速查询,这就是为什么您无法获得任何可预测的排序顺序。不幸的是,快速查询不允许在查询语法中进行排序。如果使用以下语法将查询放入Sitecore开发人员中心的XPath Builder中,您将看到相同的结果:
fast:/sitecore/content/Global/Team Members/Categories/*
我认为解决这一问题的最快方法是将Sitecore的_Sortorder字段添加到ICategory定义中
[SitecoreField("__Sortorder"),]
string Sortorder { get; set; }
然后,您可以向模型中添加另一个属性,该属性返回该属性的排序版本
public IEnumberable<ICategory> SortedCategories { get { return Categories.OrderBy(s=>s.Sortorder); } }
public IEnumberable SortedCategories{get{return Categories.OrderBy(s=>s.Sortorder);}
请记住,您还可以使用[SitecoreChildren]装饰器获取当前项的子项。我不确定这是否真的是你想要的,但是装饰师会按照Sitecore的排序器以正确的顺序返回你的物品。Glass默认情况下不使用快速查询。我不知道为什么会这样。您是否将Glass返回的结果与Sitecore API返回的结果进行了比较?