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
Eseguire attività basate su eventi con Azure Container Jobs
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati
Eseguire operazioni sui blob con Azure Storage Actions
Ottimizzazione dei block template in Angular 17
Utilizzare gli snapshot con Azure File shares
Usare le variabili per personalizzare gli stili CSS
Utilizzare la session affinity con Azure Container Apps
Routing statico e PreRendering in una Blazor Web App
Recuperare un elemento inserito nella cache del browser tramite API JavaScript
Reactive form tipizzati con modellazione del FormBuilder in Angular
Evitare la script injection nelle GitHub Actions
I più letti di oggi
- Utilizzare WebAssembly con .NET, ovunque
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Disabilitare automaticamente un workflow di GitHub (parte 2)
- Ottimizzazione dei block template in Angular 17
- Paginare i risultati con QuickGrid in Blazor