我正在使用 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。