我正在使用 .net 8 Blazor 应用程序,并使用 NavigationManager 进行导航
var instanceIdForNavigation = Uri.UnescapeDataString(MyStringValue);
NavigationManager.NavigateTo($"/recipeInstanceDetail/{instanceIdForNavigation}");
此导航结果的网址如 https://localhost:5103/recipeInstanceDetail/M-XXX.3_520kg_20231122125053_2
一切正常。但是,当我按 F5 或仅粘贴 URL 时,我得到 404。
我的页面将此作为第一行
@page "/recipeInstanceDetail/{InstaceId}"
在 razor.cs 文件中我确实有属性
[Parameter]
public string InstaceId { get; set; }.
我做错了什么? 我在其他页面上有相同的设置,一切正常,所以我的猜测是一些特殊字符或字符串的内容。感谢您的任何建议。
我确实尝试对字符串进行 url 编码和解码,但从未从中得到任何结果。
问题出在“InstaceId”字符串中的点。这导致 url 被识别为文件“xxx.xxx”。所以它返回找不到静态文件404。
您可以将“_Host.cshtml”路由模板
@page "/"
更改为 @page "/{**path}"
以使点路径起作用。