public virtual async Task <string> GetDynamicContentHtmlAsync(string storeId, string placeholderName)
        {
            string htmlContent = null;

            var evalContext = _workContextAccessor.WorkContext.ToDynamicContentEvaluationContext();

            evalContext.PlaceName = placeholderName;
            evalContext.StoreId   = storeId;
            var result = await _dynamicContentEvaluator.EvaluateDynamicContentItemsAsync(evalContext);

            if (result != null)
            {
                var htmlContentSpec    = new HtmlDynamicContentSpecification();
                var htmlDynamicContent = result.FirstOrDefault(htmlContentSpec.IsSatisfiedBy);
                if (htmlDynamicContent != null)
                {
                    var dynamicProperty = htmlDynamicContent.DynamicProperties.FirstOrDefault(htmlContentSpec.IsSatisfiedBy);
                    if (dynamicProperty != null && dynamicProperty.Values.Any(v => v.Value != null))
                    {
                        htmlContent = dynamicProperty.Values.First().Value.ToString();
                    }
                }
            }
            return(htmlContent);
        }
        public async Task <ActionResult <string> > GetDynamicContent(string placeName)
        {
            string htmlContent = null;

            var evalContext = WorkContext.ToDynamicContentEvaluationContext();

            evalContext.PlaceName = placeName;
            var result = await _dynamicContentEvaluator.EvaluateDynamicContentItemsAsync(evalContext);

            if (result != null)
            {
                var htmlContentSpec    = new HtmlDynamicContentSpecification();
                var htmlDynamicContent = result.FirstOrDefault(htmlContentSpec.IsSatisfiedBy);
                if (htmlDynamicContent != null)
                {
                    var dynamicProperty = htmlDynamicContent.DynamicProperties.FirstOrDefault(htmlContentSpec.IsSatisfiedBy);
                    if (dynamicProperty != null && dynamicProperty.Values.Any(v => v.Value != null))
                    {
                        htmlContent = dynamicProperty.Values.First().Value.ToString();
                    }
                }
            }
            return(htmlContent);
        }