我们正在升级到最新版本的 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})
我实际上会得到一个带有似乎正确字段的项目。任何帮助,将不胜感激。