public override async Task <IDisplayResult> UpdateAsync(TaxonomyField field, IUpdateModel updater, UpdateFieldEditorContext context) { var model = new EditTaxonomyFieldViewModel(); if (await updater.TryUpdateModelAsync(model, Prefix)) { var settings = context.PartFieldDefinition.GetSettings <TaxonomyFieldSettings>(); field.TaxonomyContentItemId = settings.TaxonomyContentItemId; field.TermContentItemIds = model.TermEntries.Where(x => x.Selected).Select(x => x.ContentItemId).ToArray(); if (settings.Unique && !String.IsNullOrEmpty(model.UniqueValue)) { field.TermContentItemIds = new[] { model.UniqueValue }; } if (settings.Required && field.TermContentItemIds.Length == 0) { updater.ModelState.AddModelError( nameof(EditTaxonomyFieldViewModel.TermEntries), S["A value is required for '{0}'", context.PartFieldDefinition.DisplayName()]); } } return(Edit(field, context)); }
public override async Task <IDisplayResult> UpdateAsync(TaxonomyField field, IUpdateModel updater, UpdateFieldEditorContext context) { var model = new EditTaxonomyFieldViewModel(); if (await updater.TryUpdateModelAsync(model, Prefix)) { var settings = context.PartFieldDefinition.GetSettings <TaxonomyFieldSettings>(); field.TaxonomyContentItemId = settings.TaxonomyContentItemId; field.TermContentItemIds = model.TermEntries.Where(x => x.Selected).Select(x => x.ContentItemId).ToArray(); if (settings.Required && field.TermContentItemIds.Length == 0) { updater.ModelState.AddModelError( nameof(EditTaxonomyFieldViewModel.TermEntries), S["A value is required for '{0}'", context.PartFieldDefinition.Name]); } // Update display text for tags. var taxonomy = await _contentManager.GetAsync(settings.TaxonomyContentItemId, VersionOptions.Latest); if (taxonomy == null) { return(null); } var terms = new List <ContentItem>(); foreach (var termContentItemId in field.TermContentItemIds) { var term = TaxonomyOrchardHelperExtensions.FindTerm(taxonomy.Content.TaxonomyPart.Terms as JArray, termContentItemId); terms.Add(term); } field.SetTagNames(terms.Select(t => t.DisplayText).ToArray()); } return(Edit(field, context)); }