public static void AddSpaRoutes(this IRouteBuilder routes)
    {
        var urlTemplate = SharpViewComponent.SpaComponentRelativeUrl("{name}", null).Substring(1);

        routes.MapGet(urlTemplate, async context =>
        {
            var name      = (string)context.GetRouteValue("name");
            var parameter = SharpViewComponent.GetParameter <object>(context);
            var content   = await context.RenderComponentAsync(name, parameter);
            await context.Response.WriteAsync(content);
        });
    }
        public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
        {
            if (this.SpaTarget != null)
            {
                var component = Api.Global.RazorPage();

                var relativePostUrl = SharpViewComponent.SpaComponentRelativeUrl(
                    component.Path.Replace("Default.cshtml", string.Empty).Split("/", System.StringSplitOptions.RemoveEmptyEntries).Last(), null);


                output.Attributes.Add("spa-target", this.SpaTarget.Value);
                output.Attributes.Add("onsubmit",
                                      $@"onSpaFormSubmit($(this),""{relativePostUrl}"");return false;");
            }

            //}
            //else
            //{
            //    output.Attributes.Add("onsubmit", "onSpaButtonSubmit($(this)); return false;");
            //}
            await base.ProcessAsync(context, output);
        }