Search code examples
asp.net-coreblazor

.Net Core Blazor How to pass multiple parameters?


Click the a TAB to pass multiple parameters. How to receive

<a href="../navigatetopage?id="1"&key="img"></a>

In the page you want to navigate to, add the parameter to your route:

@page "/navigatetopage/"

[Parameter]
private string myvalue{ get; set; }

Solution

  • The easiest way is to use Route parameters instead of QueryString:

    @page "/navigatetopage/{id:int}/{key}"
    
    @code 
    {
        [Parameter]
        public int Id { get; set; }
    
        [Parameter]
        public string Key { get; set; }
    }
    

    And the url looks like:

    <a href="../navigatetopage/1/img"></a>
    

    Or if you do want to query string, set the property / field within 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 idStr) && int.TryParse(idStr, out var id))
            {
                Id = id;
            }
    
            if (query.TryGetValue("Key", out var key))
            {
                Key = key;
            }
        }
    }