我正在安装Sitecore 7 + Glass Mapper 3,我希望对其进行优化。
我的代码示例是:
[SitecoreQuery(".//*[@@templateid = '{011EC776-D9F3-4D73-8D8D-E454417E7574}']",
IsRelative = true)]
IEnumerable<ItineraryLine> Itinerary { get; set; }
我希望使用FastQuery,但我收到错误:
预期在第4位的字符串结尾
我给了following solution a try这涉及到getLookupSourceItems
管道的插入 - 但我不认为这是正确的管道,因为它不会在调试中触发。
在这种情况下,Glass会使用另一个管道(如果有的话)吗?有没有不同的方法可以解决我加快这个目标的目标?
如果我没有使用属性而是使用扩展方法,我可以手动执行此操作并使用*[@@id='']
来设置根节点,但我希望尽可能避免这种情况。
答案 0 :(得分:7)
当使用IsRelative设置为true时,GMS会通过Axes SelectItem推送查询。 Sitecore不允许快速查询Axes选择,例如:
Item.Axes.SelectItems("fast:./*");
请参阅第3页的文档:
http://www.iosh.co.uk/~/media/using%20sitecore%20fast%20query001.ashx
然而,GMS非常棒让我们能够以另一种方式解决这个问题,您可以在GMS将扩展的查询中添加占位符。删除IsRelative属性并使用{path} 占位符允许相同的结果:
[SitecoreQuery("fast:{path}//*[@@templateid = '{011EC776-D9F3-4D73-8D8D-E454417E7574}']")]
IEnumerable<ItineraryLine> Itinerary { get; set; }
路径占位符将扩展到正在映射的当前项的完整路径。