Выполнить TagHelperComponent в context.Response.WriteAsync - PullRequest
0 голосов
/ 12 января 2020

Можно ли выполнить TagHelperComponent из, скажем, метода Startup.Configure? Этот пример не работает, но я бы хотел сделать что-то подобное.

public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddTransient<ITagHelperComponent, HeadTagHelperComponent>();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapGet("/", async context =>
                {
                    await context.Response.WriteAsync(
                        @"
                            <!doctype html>
                            <html lang=en>
                            <head>
                                <meta charset=utf-8>
                            </head>
                            <body>
                                <h1>Hello, world</h1>                                
                            </body>
                            </html>
                        "
                    );
                });
            });
        }
    }
    public class HeadTagHelperComponent : TagHelperComponent
    {
        public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
        {
            if (string.Equals(context.TagName, "head", StringComparison.OrdinalIgnoreCase))
            {
                output.PostContent.AppendHtml("<script>alert('head tag');</script>");
            }
            return Task.CompletedTask;
        }
    }
...