如何设置MediaPart的Media Url? Orchard MediaLibraryPickerField MediaParts为null

时间:2014-04-19 13:21:15

标签: orchardcms orchardcms-1.7

我试图在发布后自动将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

1 个答案:

答案 0 :(得分:0)

MediaParts实现为一个惰性字段,因此不会不必要地获取该值。惰性字段的加载器由Loaded事件期间字段的处理程序设置。

刚刚创建的内容项在进入Creating之前已经过CreatedPublishingPublished。这意味着此时媒体库选取器字段的媒体部件集合不可用。

你正在尝试做什么?

此外,您不应该依赖内容项的部件顺序或数量,因此Skip(13)不是进入所需部件的正确方式。