.Net Core Blazor 如何传递多个参数?

ken*_*ent 10 asp.net-core blazor

单击一个选项卡以传递多个参数。如何领取

<a href="../navigatetopage?id="1"&key="img"></a>
Run Code Online (Sandbox Code Playgroud)

在您要导航到的页面中,将参数添加到您的路线中:

@page "/navigatetopage/"

[Parameter]
private string myvalue{ get; set; }
Run Code Online (Sandbox Code Playgroud)

itm*_*nus 17

最简单的方法是使用 Route 参数而不是 QueryString:

@page "/navigatetopage/{id:int}/{key}"

@code {
    [Parameter] public int Id{get;set;}
    [Parameter] public string Key{get;set;}

    ...
}
Run Code Online (Sandbox Code Playgroud)

网址如下所示:

<a href="../navigatetopage/1/img"></a>
Run Code Online (Sandbox Code Playgroud)

或者,如果您确实想查询字符串,请在以下范围内设置属性/字段OnParametersSet()

@page "/navigatetopage/"

@code {
    public int Id{get;set;}
    public string Key{get;set;}

    protected override void OnParametersSet(){
        var qs= navManager.ToAbsoluteUri(navManager.Uri).Query;
        var query = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(qs);
        if (query.TryGetValue("id", out var id_str)) {
            if (Int32.TryParse(id_str, out var id)){
                this.Id = id;
            }
        }
        if (query.TryGetValue("Key", out var key)) {
            this.Key = key;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Tos*_*Net 5

将多个参数传递到页面的一个非常简单的解决方案是使用[SupplyParameterFromQuery(Name = "myParam")]

@code {
    [Parameter]
    [SupplyParameterFromQuery(Name = "id")]
    public int myId { get; set; }

    [Parameter]
    [SupplyParameterFromQuery(Name = "Key")]
    public String myKey { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后更改路由@page“navigatetopage”是没有用的。

我们也可以写/navigatetopage?id=1&key=img