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

How to programmatically create an instance of the Glass.Mapper.Sc.Fields.Image class?

我正在使用 Sitecore MVC 网站和控制器,我正在尝试以编程方式填充 Glass.Mapper.Sc.Fields.Image class 的 Src 属性。然而,令人恼火的是它只用 public getter 和内部 setter:

声明
public string Src { get; internal set; }

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

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

我尝试了以下方法,但它 returns 是一个空的 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 class 的 Src 属性 或将 Sitecore 字段转换为 Image实例.


更新>>>

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

这段代码对我有用:

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

您应该为图片设置 MediaId。

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