我正在使用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
属性。
答案 0 :(得分:1)
我认为从Sitecore项创建合适的Glass类型更有意义,只需使用Image属性即可。没有用于仅创建Image类型的简单API。你可以做到这一点,但最终Glass将首先创建外部类型。
答案 1 :(得分:0)
此代码适用于我:
var image = new Image() {MediaId = mediaItem.ID.ToGuid()};
您应该为图像设置MediaId。