Leggere parametri in QueryString in Blazor

di Marco De Sanctis, in ASP.NET Core,

In ASP.NET Core abbiamo molteplici opzioni per leggere i dati in querystring, per esempio esponendoli come parametri di un controller e far sì che il routing li popoli automaticamente.

Purtroppo in Blazor l'infrastruttura di Routing è molto più limitata e non abbiamo invece alcun sistema out-of-the-box. Pertanto l'unica opzione è costruirsi una soluzione personalizzata, e il modo più immediato è quello di avvalersi del seguente package:

Install-Package Microsoft.AspNetCore.WebUtilities

Immaginiamo di voler inizializzare il Counter del template di default di Blazor a un valore fornito in querystring. Il procedimento si basa sull'utilizzo di NavigationManager per recuperare il path corrente, e poi della classe QueryHelpers per effettuare il parsing della querystring. Possiamo riscrivere la pagina Counter.razor in questo modo:

@page "/counter"
@inject NavigationManager NavigationManager

<h1>Counter</h1>

<p>Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
    private int currentCount = 0;

    private void IncrementCount()
    {
        currentCount++;
    }

    protected override void OnInitialized()
    {
        base.OnInitialized();

        var currentUrl = new Uri(this.NavigationManager.Uri);
        var query = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(currentUrl.Query);

        if (query.ContainsKey("start"))
        {
            currentCount = int.Parse(query["start"]);
        }
    }
}

Come possiamo notare, abbiamo innanzitutto iniettato l'istanza di NavigationManager ed poi effettuato l'override del metodo OnInitialized, dove come prima cosa andiamo a recuperare l'Uri corrente. Nel passo successivo, grazie a QueryHelpers.ParseQuery, possiamo recuperare il dictionary di tutte le coppie chiave-valore presenti in querystring.
A questo punto non dobbiamo far altro che implementare la nostra logica di inizializzazione, impostando il valore di currentCount a quello recuperato, se presente.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi