Exemple #1
0
        protected override async Task ProcessCoreAsync(TagHelperContext context, TagHelperOutput output)
        {
            if (TargetZone.IsEmpty())
            {
                output.SuppressOutput();
                return;
            }

            if (output.Attributes.ContainsName("data-origin"))
            {
                var origin = output.Attributes["data-origin"];
                var x      = origin;
            }

            if (Key.HasValue() && _widgetProvider.ContainsWidget(TargetZone, Key))
            {
                output.SuppressOutput();
                return;
            }

            TagHelperContent childContent = await output.GetChildContentAsync();

            TagHelperContent content;

            if (output.TagName == "widget")
            {
                if (childContent.IsEmptyOrWhiteSpace)
                {
                    output.SuppressOutput();
                    return;
                }

                // Never render <widget> tag, only the content
                output.TagName = null;
                content        = childContent;
            }
            else
            {
                output.Content.SetHtmlContent(childContent);
                content = new DefaultTagHelperContent();
                output.CopyTo(content);
            }

            output.SuppressOutput();

            if (!content.IsEmptyOrWhiteSpace)
            {
                var widget = new HtmlWidgetInvoker(content)
                {
                    Order = Ordinal, Prepend = Prepend, Key = Key
                };
                _widgetProvider.RegisterWidget(TargetZone, widget);
            }
        }
        protected override async Task ProcessCoreAsync(TagHelperContext context, TagHelperOutput output)
        {
            if (TargetZone.IsEmpty())
            {
                output.SuppressOutput();
                return;
            }

            if (Key.HasValue() && _widgetProvider.ContainsWidget(TargetZone, Key))
            {
                output.SuppressOutput();
                return;
            }

            if (ViewContext.HttpContext.Request.IsAjaxRequest())
            {
                // Don't re-inject content during AJAX requests, the target zones are most probably rendered already.
                // Just output the content in-place.
                if (output.TagName == "widget")
                {
                    output.TagName = null;
                }
                else if (output.TagName == "meta")
                {
                    output.SuppressOutput();
                }

                return;
            }

            TagHelperContent childContent = await output.GetChildContentAsync();

            TagHelperContent content;

            if (output.TagName == "widget")
            {
                if (childContent.IsEmptyOrWhiteSpace)
                {
                    output.SuppressOutput();
                    return;
                }

                // Never render <widget> tag, only the content
                output.TagName = null;
                content        = childContent;
            }
            else
            {
                output.Content.SetHtmlContent(childContent);
                content = new DefaultTagHelperContent();
                output.CopyTo(content);
            }

            output.SuppressOutput();

            if (!content.IsEmptyOrWhiteSpace)
            {
                var widget = new HtmlWidgetInvoker(content)
                {
                    Order = Ordinal, Prepend = Prepend, Key = Key
                };
                _widgetProvider.RegisterWidget(TargetZone, widget);
            }
        }