Negli script precedenti abbiamo iniziato ad approfondire il Routing in Blazor, e abbiamo visto come al momento sia un po' più limitato di quello di ASP.NET Core MVC.
Purtroppo questa caratteristica non fa eccezione anche nel caso in cui dobbiamo gestire parametri opzionali, che al momento sono supportati solo specificando route multiple. Ripercorriamo l'esempio dello script precedente, relativo al counter, questa volta proponendoci di impostare il valore iniziale tramite un parametro opzionale nel path:
Per poter ottenere questo risultato, l'approccio da utilizzare è quello di specificare due route sul componente:
@page "/counter" @page "/counter/{currentCount:int}" <h1>Counter</h1> <p>Current count: @CurrentCount</p> <button class="btn btn-primary" @onclick="IncrementCount">Click me</button> @code { [Parameter] public int CurrentCount { get; set; } private void IncrementCount() { CurrentCount++; } }
Questa operazione richiede un minimo refactoring nel codice: i parametri nel routing possono essere associati solo a proprietà, tramite l'attributo Parameter, e pertanto abbiamo dovuto convertire CurrentCount per poterlo utilizzare.
Questo caso è piuttosto semplice, ma più spesso potremmo avere della logica di inizializzazione legata al valore del parametro - per esempio caricare il Customer il cui ID è presente nell'URL. Una regola fondamentale da ricordare è che per questo scopo dobbiamo utilizzare il metodo OnParameterSet (o la sua variante Async) invece che OnInitialized. Il primo, infatti, viene invocato tutte le volte che i parametri di route cambiano, mentre il secondo solo alla prima inizializzazione del componente.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire una query su SQL Azure tramite un workflow di GitHub
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Implementare l'infinite scroll con QuickGrid in Blazor Server
Potenziare Azure AI Search con la ricerca vettoriale
Creare una custom property in GitHub
Utilizzare QuickGrid di Blazor con Entity Framework
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Routing statico e PreRendering in una Blazor Web App
Ordine e importanza per @layer in CSS
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
I più letti di oggi
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
- Creare una libreria CSS universale: Cards
- Eseguire script pre e post esecuzione di un workflow di GitHub