如何使用其他属性扩展Glass.Mapper.Sc.Fields.Image?

时间:2013-09-11 18:29:16

标签: sitecore glass-mapper sitecore-mvc

我正在将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; }
}

1 个答案:

答案 0 :(得分:4)

您需要实现自定义数据处理程序来映射其他字段。

我会创建一个继承自标准Image数据处理程序的数据处理程序:

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));
}