如何以编程方式创建Glass.Mapper.Sc.Fields.Image类的实例?

时间:2016-04-26 10:22:51

标签: image sitecore glass-mapper sitecore-mvc

我正在使用Sitecore MVC网站和控制器,我正在尝试以编程方式填充Src类的Glass.Mapper.Sc.Fields.Image属性。然而,只有一个公共吸气者和一个内部的设定者,这是令人恼火的声明:

public string Src { get; internal set; }

另请注意,此类中只有一个无参数构造函数。因此必须有另一种方法在内部设置此值,但在网上进行了详尽的搜索后,我找不到任何有效的方法。

请注意,在控制器中,我拥有完全填充Image对象所需的所有值,包括Sitecore项ID。我还可以访问类型为Sitecore.Data.Fields.ImageField的父Sitecore项,其中包含Image对象的数据。

我尝试了以下操作,但它返回一个空的Image实例。

SitecoreService sitecoreService = new SitecoreService(database);
Image image = sitecoreService.GetItem<Image>(imageField.InnerField.ID.Guid);

当我尝试此操作时,它会创建一个新的Image对象,其维度和Alt字段已正确设置,但由于某种原因而不是Src属性。

Image img = sitecoreService.GetItem<Image>(imageField.MediaItem.ID.Guid);
var parent = imageField.MediaItem.Parent;

请告诉我如何以编程方式设置此Src类的Image属性,或将Sitecore字段转换为Image实例。

更新&gt;&gt;&gt;

我按照@ DrazenJanjicek的建议,设法使用sitecoreService.GetItem方法映射父项,该方法为我成功填充了所有Image属性。

2 个答案:

答案 0 :(得分:1)

我认为从Sitecore项创建合适的Glass类型更有意义,只需使用Image属性即可。没有用于仅创建Image类型的简单API。你可以做到这一点,但最终Glass将首先创建外部类型。

答案 1 :(得分:0)

此代码适用于我:

var image = new Image() {MediaId = mediaItem.ID.ToGuid()};

您应该为图像设置MediaId。