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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Gestione dei nomi con le regole @layer in CSS
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Creare una libreria CSS universale: Clip-path
Ottimizzare le performance usando Span<T> e il metodo Split
Selettore CSS :has() e i suoi casi d'uso avanzati
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework