【发布时间】:2015-05-18 22:37:28
【问题描述】:
我们正在升级到最新版本的 Sitecore,同时升级到 nuget 上提供的最新版本的 glass mapper。
我们的代码在开始 glass mapper 升级之前一直在工作,但由于 glass mapper 没有正确扩展我们的自定义类型,我们的代码开始失败。
还需要注意的是,我们没有使用 Windsor 作为 DI 容器,我们选择了最新版本的 Autofac,随后必须配置 glass mapper 以与我们的容器一起使用。
var page = _context.GetCurrentItem<CarouselPage>();
这个方法调用曾经返回一个完全膨胀的对象,但现在它只返回由 glass mapper 创建的新实例。具有空属性,或具有空属性的动态类型。
[SitecoreType(TemplateId = "0539B72D-FAAC-49DE-8A42-C60D7FF180DD")]
public class CarouselPage : ICarousel
{
[SitecoreField()]
[SitecoreEditable]
public virtual IEnumerable<CarouselItem> Carousel { get; set; }
[SitecoreField(FieldName = "Overlay Style")]
public virtual bool OverlayStyle { get; set; }
[SitecoreField(FieldName = "Carousel Pagination Alignment", FieldType = SitecoreFieldType.Droplink)]
public KeyValue CarouselDotAlignment { get; set; }
[SitecoreField(FieldName = "Equalize Desktop", FieldType = SitecoreFieldType.Droplink)]
public KeyValue EqualizeDesktopText { get; set; }
}
public interface ICarousel
{
IEnumerable<CarouselItem> Carousel { get; set; }
}
属性Carousel 为NULL,但CarouselDotAlignment 和EqualizeDesktopText 是KeyValue 类型的新动态实例,它们自己的属性等于NULL。
如果我绕过玻璃映射器并调用
Sitecore.Context.Database.GetItem({id}) 我实际上得到了一个带有似乎正确字段的项目。任何帮助将不胜感激。
【问题讨论】:
-
您找到解决问题的方法了吗?
-
由于时间限制,我们恢复了 glass mapper 的升级,并继续使用旧版 glass mapper 二进制文件与最新版本的 Sitecore 进行对比。抱歉,我们不太可能回到这个问题上。
-
我遇到了同样的问题并解决了:stackoverflow.com/questions/23264897/…
标签: c# asp.net-mvc sitecore glass-mapper