public async Task <string> InvokeWidgetAsync(WidgetInvoker widget)
        {
            Guard.NotNull(widget, nameof(widget));

            using var psb    = StringBuilderPool.Instance.Get(out var sb);
            using var output = new StringWriter(sb);

            var actionContext = GetActionContext();
            var viewContext   = CreateViewContext(
                actionContext,
                actionContext.HttpContext.RequestServices.GetService <IViewDataAccessor>().ViewData,
                output);

            var result = await widget.InvokeAsync(viewContext);

            result.WriteTo(output, HtmlEncoder.Default);
            return(output.ToString());
        }
        /// <summary>
        /// Invokes a widget and returns its html content.
        /// </summary>
        /// <param name="widget">Widget to invoke.</param>
        /// <returns>Widget rendering result</returns>
        public static Task <string> InvokeWidgetAsync(this ControllerBase controller, WidgetInvoker widget)
        {
            Guard.NotNull(controller, nameof(controller));

            var renderer = controller.HttpContext.RequestServices.GetRequiredService <IRazorViewInvoker>();

            return(renderer.InvokeWidgetAsync(widget));
        }
 public TBuilder Content(WidgetInvoker value)
 {
     Item.Widget = value;
     return(this as TBuilder);
 }