我正在寻找一种方法来查找包含某些标签的所有网页。对于文档,我可以这样做:
// convert list of tags to list of Guids
var tagGuids = GetGuidsForTags(tags);
// find all items with one of these tags
return App.WorkWith().Documents()
.Where(ni => ni.GetValue<IList<Guid>>("Tags").Any(tag => tagGuids.Contains(tag)) &&
ni.Status == ContentLifecycleStatus.Live
)
.Get().DistinctBy(x => x.Id).ToList();
但是当使用App.WorkWith().Pages()
代替时,我收到错误消息,说明PageNode没有名为&#34;标签&#34;的自定义字段。
类型&#39; System.Exception&#39;的例外情况发生在 Telerik.Sitefinity.Model.dll但未在用户代码中处理
其他信息:错误的自定义字段&#39;标记&#39;对于类型 &#39; Telerik.Sitefinity.Pages.Model.PageNode&#39;
有谁知道如何获取包含某些标签的网页列表?我使用的是Sitefinity 8.1。
澄清我没有在我的页面中添加自定义标签字段。当我这样做时,我得到了两次:
所以Sitefinity默认似乎有一个标签字段......
答案 0 :(得分:1)
我假设你添加了一个名为&#34; Tags&#34;的自定义页面字段。
var pages = App.WorkWith().Pages()
.LocatedIn(PageLocation.Frontend)
.ThatArePublished()
.Where(p => p.GetValue<TrackedList<Guid>>("Tags").Any(tag => tagGuids.Contains(tag)))
.Get().ToList(); //ToList to commit to memory for iteration if needed
答案 1 :(得分:0)
显然我有一个配置错误的Sitefinity。一旦我删除了自制自定义字段标签,它也删除了原始标签。所以现在我只剩下一个,现在是一个自定义字段。完成后,我可以使用原始问题中的代码访问标签...
希望我能解释一下,因为我花了很长时间来弄明白这一点。