Glass 映射器从 Link 路径填充列表
Glass mapper populate list from Link path
我正在尝试使用不同文件夹中的子项填充当前模型的列表。
在我当前的模型中,我想定义一个类型为 General Link 的字段,我将在其中 select 来自 Sitecore 的具有不同子项的项目。
"public virtual IEnumerable List" 应填充上述子项。
我阅读了与如何进行以下类型的查询相关的不同帖子:
[SitecoreQuery("./*[@@templatename='Testimonial']", IsRelative = true)]
public virtual IEnumerable Children { get;放; }
但这不适用于我的情况,因为我很可能会在不同区域使用此模板,而我不想将其包含在此处。
有谁知道 Glass 是否可以做到这一点,或者我应该只使用自定义查询来用项目子项目填充列表吗?
如果您使用 droplink 或 droptree 字段,而不是常规 Link,您可以通过创建通用文件夹模型来完成您想要的操作。
namespace MySite.Models
{
[SitecoreType(AutoMap = true)]
public class Folder<T> : GlassBase
{
[SitecoreChildren]
public virtual IEnumerable<T> Children { get; set; }
}
}
然后像这样从另一个模型使用它:
[SitecoreField("My Link Field")]
public virtual Folder<ChildModel> MyLinkField { get; set; }
我正在尝试使用不同文件夹中的子项填充当前模型的列表。
在我当前的模型中,我想定义一个类型为 General Link 的字段,我将在其中 select 来自 Sitecore 的具有不同子项的项目。 "public virtual IEnumerable List" 应填充上述子项。
我阅读了与如何进行以下类型的查询相关的不同帖子:
[SitecoreQuery("./*[@@templatename='Testimonial']", IsRelative = true)]
public virtual IEnumerable Children { get;放; }
但这不适用于我的情况,因为我很可能会在不同区域使用此模板,而我不想将其包含在此处。
有谁知道 Glass 是否可以做到这一点,或者我应该只使用自定义查询来用项目子项目填充列表吗?
如果您使用 droplink 或 droptree 字段,而不是常规 Link,您可以通过创建通用文件夹模型来完成您想要的操作。
namespace MySite.Models
{
[SitecoreType(AutoMap = true)]
public class Folder<T> : GlassBase
{
[SitecoreChildren]
public virtual IEnumerable<T> Children { get; set; }
}
}
然后像这样从另一个模型使用它:
[SitecoreField("My Link Field")]
public virtual Folder<ChildModel> MyLinkField { get; set; }