Blazor 导航与字符串参数问题

问题描述 投票:0回答:1

我正在使用 .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 编码和解码,但从未从中得到任何结果。

c# .net asp.net-core navigation blazor
1个回答
0
投票

问题出在“InstaceId”字符串中的点。这导致 url 被识别为文件“xxx.xxx”。所以它返回找不到静态文件404。
您可以将“_Host.cshtml”路由模板

@page "/"
更改为
@page "/{**path}"
以使点路径起作用。

© www.soinside.com 2019 - 2024. All rights reserved.