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
Utilizzare QuickGrid di Blazor con Entity Framework
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Utilizzare l nesting nativo dei CSS
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Supportare la sessione affinity di Azure App Service con Application Gateway
Gestione file Javascript in Blazor con .NET 9
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Referenziare un @layer più alto in CSS
Creare una libreria CSS universale: Clip-path
Change tracking e composition in Entity Framework
I più letti di oggi
- Formati per l'impostazione del colore in CSS3
- Eseguire una chiamata AJAX per inviare dati al server in Angular 2
- Impostare un riferimento ad una entity collegata tramite foreign key
- la Call For Papert per #netconfit è aperta!invia la tua sessione da https://aspit.co/netconfit-20 puoi parlare di #net5, #aspnet5, #efcore5, #CSharp9 e tutto quello che ruota intorno a #dotnet.