在我当前的项目中,我有多个从url中检索1个查询参数的工作示例,但是,当尝试遵循多个url参数的相同约定时,我在chrome调试器控制台中收到以下错误:
Error: System.InvalidOperationException: 'Router' cannot find any component with a route for '/confirmemail'.我的页面路由定义为:
@page "/confirmemail/{Token}/{UserId}"@functions{...}部分包含以下属性:
[Parameter]
string Token { get; set; }
[Parameter]
string UserId { get; set; }我正在尝试检索url的查询字符串参数,如下所示:
http://localhost:50466/confirmemail?Token=SomeReallyLargeToken&UserId=SomeGuidUserId
我如何才能做到这一点?
发布于 2018-12-15 05:36:14
你能试试吗?
http://localhost:50466/confirmemail/SomeReallyLargeToken/SomeGuidUserId我觉得应该能行得通。
更新:如果您想准确地从查询参数中获取值,https://learn-blazor.com/pages/router/是一个很好的例子
发布于 2019-09-13 05:05:48
对于任何对如何传递和获取查询字符串样式中的参数感兴趣的人
http://localhost:50466/confirmemail?Token=SomeReallyLargeToken&UserId=SomeGuidUserId
页面路由不变
@page "/confirmemail/"
你应该得到像这样的参数
protected override void OnInitialized()
{
var uri = navigationManager.ToAbsoluteUri(navigationManager.Uri); //you can use IURIHelper for older versions
if(QueryHelpers.ParseQuery(uri.Query).TryGetValue("Token", out var token))
{
var token_par = token.First();
}
if(QueryHelpers.ParseQuery(uri.Query).TryGetValue("UserId", out var userid))
{
var userid_par = userid.First();
}
}记住要添加以下内容
@inject NavigationManager navigationManager
@using Microsoft.AspNetCore.WebUtilities @*for QueryHelpers*@我正在使用预览版-9
发布于 2018-12-15 06:45:48
此( /{Token}/{UserId} )不是查询字符串的模式。它是路由模板url(路由参数)的一部分。这是一个查询字符串:?Token=SomeReallyLargeToken&UserId=SomeGuidUserId。
我现在还不确定,但这可能会起作用:http://localhost:50466/confirmemail/SomeReallyLargeToken/SomeGuidUserId
如果您希望访问查询参数(而不是路由参数),则需要按如下方式使用IUriHelper:
var uri = new Uri(UriHelper.GetAbsoluteUri());请注意,您应该解析返回值...我曾经见过Blazor社区创建的一个实用程序。
希望这能帮到你。
https://stackoverflow.com/questions/53786347
复制相似问题