Как визуализировать TagHelper с использованием кода C#, а TagHelper нужен контент HTML? - PullRequest
0 голосов
/ 03 марта 2020

Я могу отобразить TagHelper в C# коде, используя метод, описанный ниже.

    public TagHelperOutput? RenderOutput<T>(Action<T> setTagHelperProperties, TagHelperAttributeList? attributes = null) where T : TagHelper
    {
        var _TagHelper = (T)__ServiceProvider.GetService(typeof(T));
        if (_TagHelper == null)
        {
            return null;
        }

        setTagHelperProperties(_TagHelper);
        attributes = attributes ?? new TagHelperAttributeList();

        // Create a TagHelperOutput instance
        TagHelperOutput output = new TagHelperOutput(
            tagName: "div",
            attributes: attributes,
            getChildContentAsync: (useCachedResult, encoder) =>
                 Task.Run<TagHelperContent>(() => new DefaultTagHelperContent())
        )
        {
            TagMode = TagMode.StartTagAndEndTag
        };

        // Create a TagHelperContext instance
        TagHelperContext context = new TagHelperContext(
            allAttributes: attributes,
            items: new Dictionary<object, object>(),
            uniqueId: Guid.NewGuid().ToString()
        );

        // Process the InnerTagHelper instance 
        AsyncHelper.RunSync(() => _TagHelper.ProcessAsync(context, output));

        return output;
    }

Однако он работает, только если TagHelper имеет только такие атрибуты, как

   <my-tag my-attribute-name="..." my-attribute-id="..." />

Если для этого нужен какой-то контент, такой как ниже, я не могу понять, как это сделать с C#. Есть идеи?

<my-tag>
    <my-header>...</my-header>
    <my-content>...</my-content>
</my-tag>
...