首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Blazor路由中的多个查询字符串参数

Blazor路由中的多个查询字符串参数
EN

Stack Overflow用户
提问于 2018-12-15 04:14:19
回答 5查看 11.2K关注 0票数 10

在我当前的项目中,我有多个从url中检索1个查询参数的工作示例,但是,当尝试遵循多个url参数的相同约定时,我在chrome调试器控制台中收到以下错误:

代码语言:javascript
复制
Error: System.InvalidOperationException: 'Router' cannot find any component with a route for '/confirmemail'.

我的页面路由定义为:

代码语言:javascript
复制
@page "/confirmemail/{Token}/{UserId}"

@functions{...}部分包含以下属性:

代码语言:javascript
复制
[Parameter]
string Token { get; set; }
[Parameter]
string UserId { get; set; }

我正在尝试检索url的查询字符串参数,如下所示:

http://localhost:50466/confirmemail?Token=SomeReallyLargeToken&UserId=SomeGuidUserId

我如何才能做到这一点?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-12-15 05:36:14

你能试试吗?

代码语言:javascript
复制
http://localhost:50466/confirmemail/SomeReallyLargeToken/SomeGuidUserId

我觉得应该能行得通。

更新:如果您想准确地从查询参数中获取值,https://learn-blazor.com/pages/router/是一个很好的例子

票数 5
EN

Stack Overflow用户

发布于 2019-09-13 05:05:48

对于任何对如何传递和获取查询字符串样式中的参数感兴趣的人

http://localhost:50466/confirmemail?Token=SomeReallyLargeToken&UserId=SomeGuidUserId

页面路由不变

@page "/confirmemail/"

你应该得到像这样的参数

代码语言:javascript
复制
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();
     }
}

记住要添加以下内容

代码语言:javascript
复制
@inject NavigationManager navigationManager
@using Microsoft.AspNetCore.WebUtilities @*for QueryHelpers*@

我正在使用预览版-9

票数 27
EN

Stack Overflow用户

发布于 2018-12-15 06:45:48

此( /{Token}/{UserId} )不是查询字符串的模式。它是路由模板url(路由参数)的一部分。这是一个查询字符串:?Token=SomeReallyLargeToken&UserId=SomeGuidUserId

我现在还不确定,但这可能会起作用:http://localhost:50466/confirmemail/SomeReallyLargeToken/SomeGuidUserId

如果您希望访问查询参数(而不是路由参数),则需要按如下方式使用IUriHelper:

代码语言:javascript
复制
var uri = new Uri(UriHelper.GetAbsoluteUri());

请注意,您应该解析返回值...我曾经见过Blazor社区创建的一个实用程序。

希望这能帮到你。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53786347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档