Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sitecore/Glass Mapper:如何按内容树的顺序返回查询_Sitecore_Glass Mapper - Fatal编程技术网

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返回的结果进行了比较?