gpt4 book ai didi

c# - Sitecore GlassMapper 尝试使用查询属性获取没有版本的项目

转载 作者:太空宇宙 更新时间:2023-11-03 10:22:27 26 4
gpt4 key购买 nike

我正在使用 GlassMapper V3 和 Sitecore 7.2。使用 MVC。

Sitecore 项目数据通过 GlappMapper 管道自动映射,模型不是很复杂。该模型已通过部分类进行扩展,以自动映射子项:

[SitecoreQuery("./*[@@templatename='Slider Element']", IsRelative = true)]
public virtual IEnumerable<Slider_Element> SliderElements { get;set; }

到目前为止一切正常。但是:

如果一个或多个子项目没有当前上下文语言的版本,我无论如何都希望收到。这对 PageEditMode 自动起作用,但对正常模式不起作用。但是任何一种语言回退都是没有用的,因为这种功能应该只适用于特定的属性。我需要的是这样的:

[SitecoreQuery("./*[@@templatename='Slider Element']", IsRelative = true, GetItemsHavingNoVersions = true)]
public virtual IEnumerable<Slider_Element> SliderElements { get;set; }

据我所知,GlassMapper 可以在几个点上进行自定义,但到目前为止我还没有找到任何可以添加此类功能的地方。

我还花了几个小时在网上搜索并发现了 GlassMapper 源代码。

SitecoreService 类中有一个方法似乎完成了部分逻辑,但我不是 100% 确定:

public IEnumerable<T> Query<T>(string query, bool isLazy = false, bool inferType = false) where T : class
{
return CreateTypes( typeof(T), () => { return Database.SelectItems(query); }, isLazy, inferType) as IEnumerable<T>;
}

非常感谢您的帮助!

最好的问候,托马斯

最佳答案

您是否尝试过使用 VersionCountDisabler

将调用代码包装在 using 语句中

using(new VersionCountDisabler()){

var model = sitecoreService.GetItem<MyModel>("/sitecore/content/home");

}

查看 Glass 网站了解更多信息 - http://www.glass.lu/Mapper/Sc/Documentation/VersionCountDisabler

或者你可以全局禁用检查

protected void Application_BeginRequest()
{
Sitecore.Context.Items["Disable"] = new VersionCountDisabler();
}

关于c# - Sitecore GlassMapper 尝试使用查询属性获取没有版本的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32905017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com