asp- 包含多个 asp- 路由的页面未找到页面

asp-page with multiple asp-routes not finding page

我有一个带有以下@page 和模型的 Razor 页面:

@page "{slug1}/{slug2}/{someId:Guid?}/{step:int}"

--

public async Task<PageResult> OnGetAsync(string slug1, string slug2, Guid? someId, int step = 1)
{
    //...
}

在另一个页面上,我 link 像这样访问有问题的页面(注意缺少的“someId”):

<a asp-page="thepage" asp-route-Slug1="slug1" asp-route-Slug2="slug2" asp-route-Step="3">Open step 3</a>

但是 link 不起作用(而是 link 到它自己的页面)。如果 asp-route-SomeId 出现在 link 中(具有有效的 GUID - 不为空),link 工作 - 有和没有 asp-route-Step.

此外,仅使用两个 slug 调用 link 也能正常工作。

如果我从@page 中删除 /{step:int} 它也可以工作,但是 URL 将以 ?Step=3 结尾,我想避免这种情况。

这是我没有看到的某种限制,还是我做错了什么?

我的目标是能够 link 到有和没有 someId 的页面,在 URL 和没有?在 URL.

你可以试试把{someId:Guid?}放在{step:int}之后:

@page "{slug1}/{slug2}/{step:int}/{someId:Guid?}"