在Sitecore中筛选Sitecore中的子项

在Sitecore中筛选Sitecore中的子项,sitecore,glass-mapper,Sitecore,Glass Mapper,我有这样的树结构: Page1 PageA PageX PageY PageB Page2 我想要第1页和第2页以及所有子页。我创建了两个类。在一个类中使用sitecore查询 [SitecoreQuery(“../*[@@templateid={GUID}]”,IsRelative=true)] 公共虚拟IEnumerable链接{get;set;} 在其他ItemModel类中获取子页面 公共类ItemModel { [SitecoreId] 公共Guid Id{

我有这样的树结构:

Page1
  PageA
    PageX
    PageY
  PageB
Page2
我想要第1页和第2页以及所有子页。我创建了两个类。在一个类中使用sitecore查询

[SitecoreQuery(“../*[@@templateid={GUID}]”,IsRelative=true)]
公共虚拟IEnumerable链接{get;set;}
在其他ItemModel类中获取子页面

公共类ItemModel
{
[SitecoreId]
公共Guid Id{get;set;}
[儿童网站]
公共IEnumerable子项{get;set;}
}

这是很好的工作,但现在我只想得到那些有一些特定模板的子页面。请为我提供一些解决方案。

看起来您的大部分代码都是正确的,但是您还需要对
ItemModel
类上的
子属性应用限制

您可以在上使用
SitecoreQuery
,就像在父模型上一样:

公共类ItemModel
{
[SitecoreId]
公共Guid Id{get;set;}
[SitecoreQuery(“./*[@@templateid={SideMenuModel GUID}]”,IsRelative=true)]
公共虚拟IEnumerable子项{get;set;}
}
或者您可以使用
侧菜单模型
类上的
强制模板
属性:

[SitecoreType(TemplateId=“GUID”,EnforceTemplate=SitecoreEnforceTemplate.Template)]
公共类SideMenuModel
{
[SitecoreId]
公共Guid Id{get;set;}
}
公共类项目模型
{
[SitecoreId]
公共Guid Id{get;set;}
[儿童网站]
公共虚拟IEnumerable子项{get;set;}
}
由于您已设置了
EnforceTemplate
,因此使用
[SitecoreChildren]
属性意味着仅返回与模板id匹配的项目,否则将跳过这些项目

如果您需要映射子对象的子对象,那么您也应该在
SideMenuModel
类上添加
[SitecoreChildren]
属性(或者重构代码以便类引用自身),或者您可以使用“获取所有子对象查询(
/*[@@templateid={SideMenuModel GUID})”
)尽管我建议您在此时使用内容搜索API


您可以在有关的博客文章中阅读更多内容。

看起来您的大部分代码都是正确的,但是您还需要对
ItemModel
类上的
子属性应用限制

您可以在上使用
SitecoreQuery
,就像在父模型上一样:

公共类ItemModel
{
[SitecoreId]
公共Guid Id{get;set;}
[SitecoreQuery(“./*[@@templateid={SideMenuModel GUID}]”,IsRelative=true)]
公共虚拟IEnumerable子项{get;set;}
}
或者您可以使用
侧菜单模型
类上的
强制模板
属性:

[SitecoreType(TemplateId=“GUID”,EnforceTemplate=SitecoreEnforceTemplate.Template)]
公共类SideMenuModel
{
[SitecoreId]
公共Guid Id{get;set;}
}
公共类项目模型
{
[SitecoreId]
公共Guid Id{get;set;}
[儿童网站]
公共虚拟IEnumerable子项{get;set;}
}
由于您已设置了
EnforceTemplate
,因此使用
[SitecoreChildren]
属性意味着仅返回与模板id匹配的项目,否则将跳过这些项目

如果您需要映射子对象的子对象,那么您也应该在
SideMenuModel
类上添加
[SitecoreChildren]
属性(或者重构代码以便类引用自身),或者您可以使用“获取所有子对象查询(
/*[@@templateid={SideMenuModel GUID})”
)尽管我建议您在此时使用内容搜索API

您可以在博客文章中阅读更多关于的内容。

我可以询问您的联系人(如skype、电子邮件等)。我想学习sitecore。我还是一个初学者,我可以要求你的联系方式(如skype、电子邮件等)。我想学习sitecore。我还是个初学者