public Task <dynamic> UpdatePartFieldEditorAsync(ContentPartFieldDefinition contentPartFieldDefinition, IUpdateModel updater, string groupId = "")
        {
            if (contentPartFieldDefinition == null)
            {
                throw new ArgumentNullException(nameof(contentPartFieldDefinition));
            }

            var     contentPartDefinition    = contentPartFieldDefinition.PartDefinition;
            dynamic partFieldDefinitionShape = CreateContentShape("ContentPartFieldDefinition_Edit");

            _contentDefinitionManager.AlterPartDefinition(contentPartDefinition.Name, partBuilder =>
            {
                partBuilder.WithField(contentPartFieldDefinition.Name, async partFieldBuilder =>
                {
                    partFieldDefinitionShape.ContentField = contentPartFieldDefinition;

                    var fieldContext = new UpdatePartFieldEditorContext(
                        partFieldBuilder,
                        partFieldDefinitionShape,
                        groupId,
                        _shapeFactory,
                        _layoutAccessor.GetLayout(),
                        updater
                        );

                    await BindPlacementAsync(fieldContext);

                    await _handlers.InvokeAsync(handler => handler.UpdatePartFieldEditorAsync(contentPartFieldDefinition, fieldContext), Logger);
                });
            });

            return(Task.FromResult <dynamic>(partFieldDefinitionShape));
        }
 public Task UpdatePartFieldEditorAsync(ContentPartFieldDefinition model, UpdatePartFieldEditorContext context)
 {
     return(_partFieldDisplayDrivers.InvokeAsync(async contentDisplay =>
     {
         var result = await contentDisplay.UpdateEditorAsync(model, context);
         if (result != null)
         {
             await result.ApplyAsync(context);
         }
     }, Logger));
 }