.NET 自定义中间件显示 webpage/form
.NET Custom Middleware to display a webpage/form
我正在尝试弄清楚如何创建自己的中间件,以提供表单或网页。
它应该像 HangFire 或 NSwager 一样可用,并且应该适用于 .NET Core WebApp 和 WebApi 项目:
app.UseHangfireDashboard();
app.UseSwaggerUi3();
所以在我的例子中,我想像这样使用它:
app.UseMyDashboard();
它需要做什么:
- 提供端点 (/myDashboard)
- 此页面包含一个简单的表单
- 提交表单并执行一些代码
我该怎么做?我需要为此创建一个单独的项目吗?因为我想在任何其他项目中重用它,这意味着我想将它打包到 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>")));
}
}
}
我正在尝试弄清楚如何创建自己的中间件,以提供表单或网页。
它应该像 HangFire 或 NSwager 一样可用,并且应该适用于 .NET Core WebApp 和 WebApi 项目:
app.UseHangfireDashboard();
app.UseSwaggerUi3();
所以在我的例子中,我想像这样使用它:
app.UseMyDashboard();
它需要做什么:
- 提供端点 (/myDashboard)
- 此页面包含一个简单的表单
- 提交表单并执行一些代码
我该怎么做?我需要为此创建一个单独的项目吗?因为我想在任何其他项目中重用它,这意味着我想将它打包到 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>")));
}
}
}