Sil*_*ows 5 c# routing asp.net-core blazor blazor-client-side
嗨,堆栈溢出!
我正在使用客户端 Blazor,并且偶然发现了一个关于使用字符串和点 (.) 进行路由的棘手部分。我希望从管理控制页面路由到具有以下路由的页面:@page "/ManageGradingExamResults/{StudentEmail}". 我用这个请求进行了测试:https://localhost/ManageGradingExamResults/1234@high.school.nz,但我没有找到。如果我将剃刀路线更改为@page "/ManageGradingExamResults/{*StudentEmail}"我最终会出现以下异常:System.InvalidOperationException: Invalid template 'ManageGradingExamResults/{*StudentEmail}'. The character '*' in parameter segment '{*StudentEmail}' is not allowed.. 由于 cshtml 页面的相似性,我尝试了这一点。
我发现我可以用整数路由,但对字符串没有运气。我也遇到过这个Microsoft 文档,它解释了路由参数并在我的页面路由中建议了 **。这允许我进入我的页面,但是我需要使用 ? 在我的电子邮件请求之前,页面没有加载我的数据,因为我可以看到它没有将参数拉入我的变量中。任何有关客户端 Blazor 路由的建议或帮助将不胜感激!
请求代码:
NavigationManager.NavigateTo($"/ManageGradingExamResults/?{student.Email}");
Run Code Online (Sandbox Code Playgroud)
请求网址:
https://localhost/ManageGradingExamResults/?1234@high.school.nz
Run Code Online (Sandbox Code Playgroud)
剃刀页面路线:
@page "/**ManageGradingExamResults/{StudentEmail}"
@page "/ManageGradingExamResults"
Run Code Online (Sandbox Code Playgroud)
我的变量:
@code
{
[Parameter]
public string StudentEmail { get; set; }
...
Run Code Online (Sandbox Code Playgroud)
在 Blazor 服务器应用中,_Host.cshtml 中的默认路由是 / (@page "/")。包含点 (.) 的请求 URL 与默认路由不匹配,因为该 URL 看起来是在请求文件。Blazor 应用针对不存在的静态文件返回 404 - 未找到响应。要使用包含点的路由,请使用以下路由模板配置 _Host.cshtml:
@page "/{**path}"
在链接生成期间,路由系统对双星号 (**) 包罗万象的参数(例如,{**myparametername})中捕获的值进行编码(正斜杠除外)
所以这应该对你有用
@page "/ManageGradingExamResults/{**StudentEmail}"
Run Code Online (Sandbox Code Playgroud)
Blazor 文档 ( https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/routing?view=aspnetcore-5.0#routing-with-urls-that-c ontain-dots ) 建议修改后备文件服务器上的路由。
从 Azure Blob 静态网站或 Amazon S3 托管时,这是不可能的。由于假设点位于uri最右端时是一个文件,因此请考虑移动该参数。
URI 最右端带有点的参数。这将导致 404,因为StudentEmail参数包含一个点并将作为文件路由(假设您无法修改服务器 Startup.Config)。
@page "/ManageGradingExamResults/{StudentEmail}"
Run Code Online (Sandbox Code Playgroud)
移动参数,使其不在 URI 的最右端:
这将正确路由并将StudentEmail参数传递给组件。
@page "/GradingExamResults/{StudentEmail}/Manage"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2070 次 |
| 最近记录: |