public async Task <dynamic> UpdatePartEditorAsync(ContentPartDefinition contentPartDefinition, IUpdateModel updater, string groupId) { if (contentPartDefinition == null) { throw new ArgumentNullException(nameof(contentPartDefinition)); } var contentPartDefinitionShape = await CreateContentShapeAsync("ContentPartDefinition_Edit"); UpdatePartEditorContext partContext = null; var layout = await _layoutAccessor.GetLayoutAsync(); await _contentDefinitionManager.AlterPartDefinitionAsync(contentPartDefinition.Name, async partBuilder => { partContext = new UpdatePartEditorContext( partBuilder, contentPartDefinitionShape, groupId, false, _shapeFactory, layout, updater ); await BindPlacementAsync(partContext); await _handlers.InvokeAsync((handler, contentPartDefinition, partContext) => handler.UpdatePartEditorAsync(contentPartDefinition, partContext), contentPartDefinition, partContext, _logger); }); return(contentPartDefinitionShape); }