diff --git a/src/Umbraco.Core/PropertyEditors/PropertyValueConverterBase.cs b/src/Umbraco.Core/PropertyEditors/PropertyValueConverterBase.cs index 2e26894d23..3066086e7b 100644 --- a/src/Umbraco.Core/PropertyEditors/PropertyValueConverterBase.cs +++ b/src/Umbraco.Core/PropertyEditors/PropertyValueConverterBase.cs @@ -1,4 +1,6 @@ -using Umbraco.Cms.Core.Models.PublishedContent; +using System.Collections.Generic; +using System.Xml; +using Umbraco.Cms.Core.Models.PublishedContent; namespace Umbraco.Cms.Core.PropertyEditors; @@ -48,7 +50,29 @@ public abstract class PropertyValueConverterBase : IPropertyValueConverter /// public virtual object? ConvertIntermediateToXPath(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, object? inter, bool preview) - => inter?.ToString() ?? string.Empty; + { + var d = new XmlDocument(); + XmlElement e = d.CreateElement("values"); + d.AppendChild(e); + + if (inter is IEnumerable collection) + { + foreach (var value in collection) + { + XmlElement ee = d.CreateElement("value"); + ee.InnerText = value; + e.AppendChild(ee); + } + } + else + { + XmlElement ee = d.CreateElement("value"); + ee.InnerText = inter?.ToString() ?? string.Empty; + e.AppendChild(ee); + } + + return d.CreateNavigator(); + } [Obsolete( "This method is not part of the IPropertyValueConverter contract, therefore not used and will be removed in future versions; use IsValue instead.")]