Dot-Net-Core

Blazor 路由中的多個查詢字元串參數

  • January 18, 2022

我目前的項目中有多個從 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

我怎樣才能做到這一點?

你能試試嗎?

http://localhost:50466/confirmemail/SomeReallyLargeToken/SomeGuidUserId

我認為它應該工作。

更新:如果您想完全從查詢參數中獲取值,則此處為https://learn-blazor.com/pages/router/

對於任何對如何以查詢字元串樣式傳遞和獲取參數感興趣的人

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*@

我正在使用 preview-9

引用自:https://stackoverflow.com/questions/53786347