我们正在升级到Sitecore的最新版本,同时升级到nuget上可用的最新版本的glass mapper。
我们的代码在我们开始玻璃映射器升级之前已经开始失败,因为我们的自定义类型没有被玻璃映射器正确充气。
同样重要的是要注意,我们没有使用Windsor作为DI容器,我们选择了最新版本的Autofac,随后必须配置glass mapper才能使用我们的容器。
var page = _context.GetCurrentItem<CarouselPage>();
此方法调用一旦返回完全膨胀的对象,但现在它只返回由glass mapper创建的新实例。使用null属性或具有null属性的动态类型。
[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})
我实际上得到了一个看似正确的字段的项目。任何帮助将不胜感激。
答案 0 :(得分:0)
听起来可能没有正确配置属性,我会使用以下代码检查Glass.Mapper认为配置的内容:
var result = Glass.Mapper.Context.Default.TypeConfigurations[typeof(MyModel)];
var properties = result.Properties.Count();
结果对象将允许您探索Glass认为应该发生的事情。
答案 1 :(得分:0)
这与此问题有关#132 将Nuget包更新到v4.0.1.5应该可以解决这个问题。