I'm wondering if anybody has any views or knowledge on where the future of TagHelpers & Razor Components lay. My question is only with regard to initial rendering. Not using C# code on the client-side.

I love the razor component model of working in the sense that the basic component is laid out in markup, then there is code behind.

This being compared to TagHelpers generating the markup.

Take this TagHelper label component I use for example...

```
using Microsoft.AspNetCore.Razor.TagHelpers;

namespace gMIS.TagHelpers
{
    [HtmlTargetElement("glabel", TagStructure = TagStructure.WithoutEndTag)]
    public class glabelTagHelper : TagHelper
    {
        #region Attributes

        [HtmlAttributeName("id")]
        public string id { get; set; }

        [HtmlAttributeName("class")]
        public string cls { get; set; }

        [HtmlAttributeName("xy")]
        public string xy { get; set; }

        [HtmlAttributeName("style")]
        public string style { get; set; }

        [HtmlAttributeName("value")]
        public string value { get; set; }

        #endregion Attributes

        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            //START with the container DIV
            output.TagName = "div";
            output.TagMode = TagMode.StartTagAndEndTag;
            if (id != null) output.Attributes.Add("id", id);
            if ((xy != null) && (xy != null)) output.Attributes.Add("class", "xy" + xy);
            if (style != null) output.Attributes.Add("style", "display:inline-block; font-weight:bold;" + style); //*** Any subsequent WIDTH passed in with supercede the default provided here!
            else output.Attributes.Add("style", "display:inline-block; font-weight:bold;");
            if (cls != null) output.Attributes.Add("class", cls);

            //Insert data value
            if (value != null) output.Content.AppendHtml(value);
        }
    }
}

```

I would love it if this could be coded something like...

```
<div id="{inject id}" class="{inject class}" style="{inject style}">{inject text}</div>

```

...rather than using C# to create the basic markup. 

```
output.TagName = "div";
output.TagMode = TagMode.StartTagAndEndTag;

```

Then the code behind interacts (only server-side) to finish the configuration of the basic component markup. That way, you can see the basic markup rather than the more difficult to read and visualize C# construction of the markup.

With a basic label this seems like not much of a gain, but with more complex components, being able to visualize the markup would be a real boon.

```
    <div class="{inject class}" id="{inject id}" style="{inject style}">
        <input name="{inject name}" id="{inject id}" style="{inject style}" type="text" value="-4" data-val-required="&amp;nbsp;Req!" data-val="true">
        <input id="{inject id}" style="{inject style}" type="text" placeholder="Start typing here to search..." autocomplete="off">
        <select id="{inject id}" style="{inject style}" size="1">
        </select>

        <script type="text/javascript">   
$(document).ready(function () {       $('#ext_IT_Task_Reported_By_ID').glookupInit('/TagHelpers/InternalContactLookup');   });</script>

        <span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="{inject id}"></span>
    </div>

```

Does anybody know where Taghelpers is heading the longer term? Towards the Razor Component way of construction perhaps. Apologies if my post isn't clear enough. I have thought hard about how to communicate my question. I do hope it's not confusing.