【发布时间】:2021-01-02 14:12:53
【问题描述】:
将 ASP.NET Core MVC Web 应用程序迁移到 Blazor,我遇到了路由问题。我当前的 ASP.NET MVC 路由似乎无法在 @page 指令中复制。
示例网址:https://wows-karma.com/player/503379282,Akurai_Isayeki/
到目前为止,ASP.NET Core MVC 中的路由是在控制器中以这种方式执行的:
[Route("/{controller}/{id},{name}")]
public async Task<IActionResult> Profile(uint id)
{
// Controller Code
}
这里只使用了帐户ID,我们忽略了以下用户名(您甚至可以直接删除它,只要您留下逗号,它应该仍然有效)。
现在将其移植到 Blazor,我希望有一个简单的解决方案,如下所示:
@page "/player/{id},{name?}/"
// Page HTML
@code {
[Parameter]
public uint Id { get; set; }
[Parameter]
public string Name { get; set; } // We don't need it, and we'll ignore it.
// Page Code
}
一切似乎都很好。但是在运行时,Index 会抛出这个异常:
(请注意,我尝试了其他变体,例如在name 上使用或不使用斜线、问号,出于绝望,将 , 替换为 - 作为分隔符。也没有运气)
我现在的意思是,Blazor 路由是否支持这种边缘情况?我问这个,因为我必须严格遵循这个精确的路由,以保持与使用相同方案的另一个网站的 URL 兼容性。
现在,我可以使用一些正则表达式魔法作为解决方法,以在一定程度上缓解问题,但这很可能会导致更多问题,而实际上并没有直接解决问题。所以我只会在别无选择的情况下使用它。让我们希望它不会变成那样......
【问题讨论】:
标签: c# asp.net-core url-routing blazor