gpt4 book ai didi

c# - 如何使用包含点 (.) 的字符串路由参数在客户端 blazor 中进行路由?

转载 作者:行者123 更新时间:2023-12-03 16:50:22 26 4
gpt4 key购买 nike

您好堆栈 溢出 !

我正在使用客户端 Blazor,并且偶然发现了一个关于使用字符串和点 (.) 进行路由的棘手部分。我希望从管理控制页面路由到具有以下路由的页面:@page "/ManageGradingExamResults/{StudentEmail}" .我用这个请求进行了测试:https://localhost/ManageGradingExamResults/1234@high.school.nz ,但我没有找到。如果我将 Razor 路线更改为 @page "/ManageGradingExamResults/{*StudentEmail}"我最终遇到以下异常:System.InvalidOperationException: Invalid template 'ManageGradingExamResults/{*StudentEmail}'. The character '*' in parameter segment '{*StudentEmail}' is not allowed. .由于 cshtml 页面的相似性,我尝试了这一点。

我发现我可以用整数路由,但对字符串没有运气。我也遇到过this Microsoft doc 解释路由参数并在我的页面路由中建议 **。这允许我进入我的页面,但是我需要使用 ?在我的电子邮件请求之前,页面没有加载我的数据,因为我可以看到它没有将参数拉入我的变量中。
任何有关客户端 Blazor 路由的建议或帮助将不胜感激!

请求代码:

NavigationManager.NavigateTo($"/ManageGradingExamResults/?{student.Email}");

请求网址:
https://localhost/ManageGradingExamResults/?1234@high.school.nz

Razor 页面路线:
@page "/**ManageGradingExamResults/{StudentEmail}"
@page "/ManageGradingExamResults"

我的变量:
@code
{
[Parameter]
public string StudentEmail { get; set; }
...

最佳答案

From the documentation you have shared:

In Blazor Server apps, the default route in _Host.cshtml is / (@page "/"). A request URL that contains a dot (.) isn't matched by the default route because the URL appears to request a file. A Blazor app returns a 404 - Not Found response for a static file that doesn't exist. To use routes that contain a dot, configure _Host.cshtml with the following route template: @page "/{**path}"



Based on routing in .net core

During link generation, the routing system encodes the value captured in a double-asterisk (**) catch-all parameter (for example, {**myparametername}) except the forward slashes



所以这应该对你有用
@page "/ManageGradingExamResults/{**StudentEmail}"

关于c# - 如何使用包含点 (.) 的字符串路由参数在客户端 blazor 中进行路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59518503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com