我试图在发布后自动将MediaPart.MediaUrl分配给自定义图像。但.. MediaPickerField MediaParts始终为null。
OnPublished<BlogPostPart>((context, part) =>
{
ContentPart cp = part.ContentItem.Parts.Skip(13).First();
MediaLibraryPickerField field = cp.Fields.FirstOrDefault() as MediaLibraryPickerField;
if (field != null) {
// this part throws an object null reference exception since fields.MediaParts is null
foreach(Orchard.MediaLibrary.Models.MediaPart mp in field.MediaParts){
}
}
});
如何从发布事件的代码中以编程方式设置MediaUrl?我正在使用Orchard 1.8
答案 0 :(得分:0)
MediaParts实现为一个惰性字段,因此不会不必要地获取该值。惰性字段的加载器由Loaded
事件期间字段的处理程序设置。
刚刚创建的内容项在进入Creating
之前已经过Created
,Publishing
和Published
。这意味着此时媒体库选取器字段的媒体部件集合不可用。
你正在尝试做什么?
此外,您不应该依赖内容项的部件顺序或数量,因此Skip(13)
不是进入所需部件的正确方式。