1

我们正在升级到最新版本的 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,但CarouselDotAlignmentEqualizeDesktopText是该类型的新动态实例,KeyValue其自身属性等于 NULL。

如果我绕过玻璃映射器并打电话给 我,Sitecore.Context.Database.GetItem({id})我实际上会得到一个带有似乎正确字段的项目。任何帮助,将不胜感激。

4

2 回答 2

0

听起来可能没有正确配置属性,我会使用以下代码检查 Glass.Mapper 认为配置的内容:

        var result = Glass.Mapper.Context.Default.TypeConfigurations[typeof(MyModel)];
        var properties = result.Properties.Count();

结果对象将允许您探索 Glass 认为应该发生的事情。

于 2014-04-03T07:22:50.953 回答
0

这与此问题有关#132 将 Nuget 包更新到 v4.0.1.5 应该可以解决该问题。

于 2015-05-18T14:37:28.197 回答