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



我正在使用 Sitecore MVC 网站,在控制器中,我正在尝试以编程方式填充 Glass.Mapper.Sc.Fields.Image 类的 Src 属性。然而,令人讨厌的是,它只用一个公共getter和一个内部setter宣布:

public string Src { get; internal set; }

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

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

我已经尝试了以下内容,但它返回了一个空的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;

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


更新>>>

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

我认为从您的 Sitecore 项目创建正确的 Glass 类型更有意义,只需使用 Image 属性即可。没有用于仅创建映像类型的简单 API。你可以这样做,但最终 Glass 将首先创建外部类型。

这段代码对我有用:

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

您应该为映像设置媒体 ID。

最新更新