protected override DriverResult Editor(ContentPart part, Fields.MediaLibraryPickerField field, IUpdateModel updater, dynamic shapeHelper)
        {
            var model = new MediaLibraryPickerFieldViewModel {
                SelectedIds = string.Join(",", field.Ids)
            };

            updater.TryUpdateModel(model, GetPrefix(field, part), null, null);

            var settings = field.PartFieldDefinition.Settings.GetModel <MediaLibraryPickerFieldSettings>();

            if (String.IsNullOrEmpty(model.SelectedIds))
            {
                field.Ids = new int[0];
            }
            else
            {
                field.Ids = model.SelectedIds.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray();
            }

            if (settings.Required && field.Ids.Length == 0)
            {
                updater.AddModelError("Id", T("The field {0} is mandatory", T(field.DisplayName)));
            }

            return(Editor(part, field, shapeHelper));
        }
        protected override DriverResult Editor(ContentPart part, Fields.MediaLibraryPickerField field, dynamic shapeHelper)
        {
            return(ContentShape("Fields_MediaLibraryPicker_Edit", GetDifferentiator(field, part),
                                () => {
                var model = new MediaLibraryPickerFieldViewModel {
                    Field = field,
                    Part = part,
                    ContentItems = _contentManager.GetMany <ContentItem>(field.Ids, VersionOptions.Published, QueryHints.Empty).ToList(),
                };

                model.SelectedIds = string.Concat(",", field.Ids);

                return shapeHelper.EditorTemplate(TemplateName: "Fields/MediaLibraryPicker.Edit", Model: model, Prefix: GetPrefix(field, part));
            }));
        }