【发布时间】:2021-08-10 22:39:36
【问题描述】:
我在 ASPNET Core 5 Razor Pages 应用程序中使用自定义动态路由转换器。我的 TransformAsync 覆盖按预期调用并返回到页面的自定义路由,但该页面从未加载,并且请求始终返回 404。Razor 页面找不到我要路由到的页面,或者它只是忽略了我的自定义路线。
这是一个简单的测试用例。任何关于可能出错的提示,或者我如何解决问题,我们将不胜感激!
在 Startup.Configure(..) 我有
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapDynamicControllerRoute<LaunchPageTransformer>("{**id}");
});
我的 LaunchPageTransformer:DynamicRouteValueTransformer 实现:
public override async ValueTask<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values)
{
return await Task.Run(() =>
{
return new RouteValueDictionary()
{
{ "page", "Test" },
{ "id", "123" }
};
});
}
在 Pages/Test.cshtml 我有
@page "{id}"
@model Launch.Pages.TestModel
@{
}
在 Pages/Test.cshtml.cs 中:
public class TestModel : PageModel
{
public void OnGet(int? id)
{
}
}
我正在导航到 localhost:44351/123,它成功地选择了我的转换器,但对结果没有任何作用。
【问题讨论】:
标签: c# asp.net-mvc asp.net-core razor-pages