.NET 自定义中间件显示 webpage/form

.NET Custom Middleware to display a webpage/form

我正在尝试弄清楚如何创建自己的中间件,以提供表单或网页。

它应该像 HangFire 或 NSwager 一样可用,并且应该适用于 .NET Core WebApp 和 WebApi 项目:

app.UseHangfireDashboard();
app.UseSwaggerUi3();

所以在我的例子中,我想像这样使用它:

app.UseMyDashboard();

它需要做什么:

  1. 提供端点 (/myDashboard)
  2. 此页面包含一个简单的表单
  3. 提交表单并执行一些代码

我该怎么做?我需要为此创建一个单独的项目吗?因为我想在任何其他项目中重用它,这意味着我想将它打包到 NuGet 包中并使其可供内部使用。

我会先给你一个简短的答案,你可以看看文档 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware/?view=aspnetcore-3.1 了解详情。要从启动 class 调用 app.UseMyDashboard();,您需要创建一个扩展方法:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
namespace YourNamespace
{
    public static class MiddleWareExtension
    {
        public static void UseMyDashboard(this IApplicationBuilder app)
        {
            // 1. Provide an endpoint(/ myDashboard)
            app.Map("/myDashboard", app =>
                app.Run(async (context) =>
                {
                    //2. This page contains a simple form, Submit the form to redirect to another form
                    await context.Response.WriteAsync("<button onclick=\"window.location.href = '/path'; \">Click me</button>");
                }));
            //3. Another Form
            app.Map("/path", app =>
                app.Run(async (context) => await context.Response.WriteAsync("<b>New Form</b>")));
        }
    }
}