在Blazor中重用旧aspx路由



我们正在编写其他页面依赖的旧页面的新版本。因此,保持旧的路由是很重要的。

其中一条路由如下:

https://example.com/area/page.aspx?id=123

我想让这个工作,但指向一个blazor组件。我已经尝试将它作为@page补充到我已经拥有的那些,但应用程序无法运行它。

@page "/page/{id}/{property:int?}"
@page "/page/{id}"
@page "/area/page.aspx?id={id}"

我也试过了

@page "/area/page.aspx

,但这似乎也不起作用。我这么做的时候,Blazor都还没开始。我还测试了

@page "/area/page.tst

无效。我认为是.?才是罪魁祸首。

一个解决方案可能是从旧的URL重定向到组件,用@page指令可以处理的东西,但我不知道在中间件的哪里会这样做。

问题基本上是:哪些方法可以重用旧的URL与Blazor?

我发现在Startup.cs中有一个方法:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

里面有这个:

app.UseEndpoints(endpoints =>
{
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
endpoints.MapControllers();
});

在这里我可以添加以下行:

endpoints.MapGet("/area/page.aspx", async x => { x.Response.Redirect("~/page/"); });

它会重定向。漂亮的:)

结果代码将是:

app.UseEndpoints(endpoints =>
{
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
endpoints.MapControllers();
endpoints.MapGet("/area/page.aspx", async x => { x.Response.Redirect("~/page/"); });
});

相关内容

  • 没有找到相关文章

最新更新