【问题标题】:How to extend Glass.Mapper.Sc.Fields.Image with additional properties?如何使用附加属性扩展 Glass.Mapper.Sc.Fields.Image?
【发布时间】:2013-09-11 18:29:16
【问题描述】:

我将 Sitecore 媒体库图像的裁剪信息存储在添加到 /sitecore/templates/System/Media/Unversioned/Image 模板的字段中。

我想访问此字段以及 Glass.Mapper.Sc.Fields.Image 复杂字段类型中存在的所有其他属性,以便我可以继续在我的视图中使用 GlassHtml.RenderImage()

我最初尝试从该类继承是不成功的 - 它似乎破坏了映射行为 - 所以我想知道是否有另一种方法可以使用其他属性来扩展这个类?

这是我尝试过的:

[SitecoreType(AutoMap = true)]
public class MyImage : Glass.Mapper.Sc.Fields.Image
{
    public virtual string CropInfo { get; set; }
}

【问题讨论】:

    标签: sitecore glass-mapper sitecore-mvc


    【解决方案1】:

    您需要实现一个自定义数据处理程序来映射附加字段。

    我将创建一个继承自标准图像数据处理程序的数据处理程序:

    https://github.com/mikeedwards83/Glass.Mapper/blob/master/Source/Glass.Mapper.Sc/DataMappers/SitecoreFieldImageMapper.cs

    然后自定义GetFieldSetField

    创建自定义数据处理程序后,您需要将其注册到 Windsor 容器。请参阅教程 19 了解如何执行此操作:

    http://glass.lu/docs/tutorial/sitecore/tutorial19/tutorial19.html

    重要的部分:

    public static void CastleConfig(IWindsorContainer container){
            var config = new Config();
    
            container.Register(
              Component.For < AbstractDataMapper>().ImplementedBy<TweetsDataHandler>().LifeStyle.Transient
              );
    
            container.Install(new SitecoreInstaller(config));
    } 
    

    【讨论】:

    • 本文中教程 19 的链接已过期。对于那些寻找这个页面的人,更新的链接是glass.lu/Mapper/Sc/Tutorials/Tutorial19
    • 我的扩展图像有问题。我的类型也源自 Glass.Image,但 RenderImage() 或 Editable() 不会在体验编辑器中呈现站点核心图像编辑字段。我正在使用带有 Sitecore 8.0.4 的最新版本的 Glass。但我怀疑这可能是因为 GlassHtml 中的 typeof(Glass.Image) 检查?有没有办法解决这个问题?
    • @qkp 我遇到了同样的问题。玻璃的标准图像字段可以很好地渲染图像,但是一旦我更新它以使用我的自定义玻璃图像字段(从图像继承),我就没有渲染图像。我为它创建了一个数据映射器,并在我们的 IOC(简单注入器)中注册了它。你找到问题的根源了吗?
    • 不幸的是,没有,我能想到的唯一解决方法是更改​​具有此检查 typeof(Glass.Image) 的 glass 的源代码..
    • 我在 4 年后才回到同样的问题,因为 8.2 u7 和 simpleinjector 遇到了同样的问题。最后为了解决这个问题,我在我的模型映射器中为我的 Sitecore 项目使用了 x => x.Delegate(y => y.Image).GetValue(GetImage) ,然后在GetImage() 方法。本质上是手动调用我的映射器,而不是让 IoC 来做。这似乎工作正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 2016-02-20
    相关资源
    最近更新 更多