Dall'archivio articoli > ASP.NET Core
Le novità di Blazor in .NET 6.0
Per poter utilizzare questa funzionalità, devi fare il login o iscriverti.
Il rilascio della nuova versione di .NET, la 6.0, è ormai avvenuto. Tra le novità più conosciute e mediaticamente diffuse è l'introduzione delle Minimal API, che alleggeriscono lo sviluppo back-end. Tuttavia, troviamo dunque degli aggiornamenti importanti anche per quanto riguarda Blazor, alcuni dei quali provengono dall'ottimizzazione dell'infrastruttura, altri da specifici sviluppi che permettono di avere funzionalità aggiuntive. Ed è proprio su questi che vogliamo concentrarci in quest'articolo.
Prima di addentrarci nello specifico facciamo un veloce riepilogo della roadmap di .NET rapportata con Blazor.
Stando a quanto dichiarato da Microsoft, ogni versione marcata come LTS ha un supporto di 3 anni, ogni altra versione che può essere rilasciata durante questo periodo di tempo, prendendo il nome Current, verrà supportata per 18 mesi. Questo schema è importantissimo, soprattutto per chi sviluppa quotidianamente con Blazor, tenendo conto che il primo rilascio della versione Server è avvenuto in concomitanza con .NET Core 3.1 e per WebAssembly abbiamo dovuto aspettare fino a Maggio 2020, sempre nel range .NET Core 3.1.
Perchè è dunque importante specificare queste date di rilascio? Il motivo è semplice e risiede nel rilascio della prima versione di .NET 5.0, nella quale sono stati fatti enormi passi avanti, che hanno portato tutti gli sviluppatori a migrare quello che è il target framework. Ritornando ora al grafico possiamo capire che se utiliziamo Blazor, in produzione, abbiamo circa 6 mesi di tempo per effettuare una migrazione verso .NET 6.0 e riuscire ad estendere il supporto per almeno altri 3 anni. Essendo nell'ecosistema Microsoft non dobbiamo però preoccuparci: a oggi le breaking change segnalate sono solo 3, e riguardano rispettivamente un typo all'interno di un metodo, un cambiamento nella comunicazione interna di Blazor, che non va ad incidere sul nostro codice e il cambiamento di codifica dei byte array durante le interop, ossia le operazioni che avvengono tra Blazor e JavaScript.
Gli aggiornamenti che troviamo in Blazor possono essere suddivisi in due macro categorie: nuove funzionalità e integrazioni con terze parti. Per la prima possiamo subito osservare due nuovi metodi che estendono la funzionalità di NavigationManager. GetUriWithQueryParameter e GetUriWithQueryParameters permettono, partendo dall'url corrente, di creare un url che contenga i parametri query string specificati. Particolarmente utile in pagine contenenti tabelle, permettendo l'aggiornamento del link alla pagina a seguito di un'interazione dell'utente. Nella versione al singolare permette l'immissione di un nome per il parametro e il suo valore, nel caso di inserimenti multipli dovremmo creare un dizionario che contenga chiave/valore.
@inject NavigationManager NavigationManager var newUri = NavigationManager.GetUriWithQueryParameter("page", 3); var newUriComplex = NavigationManager.GetUriWithQueryParameters(new Dictionary<string, object?> { { "page",2}, { "take",10}, }); NavigationManager.NavigateTo(newUri);
All'interno di un evento scaturito da un click vi sono parecchie proprietà, e non tutte erano state intercettate e rese disponibile in Blazor. Tra le altre troviamo la posizione X e Y del mouse. Per questo motivo, all'interno dell'evento MouseEventArgs troviamo due nuove proprietà: PageX e PageY.
<button @onclick="ClickHandler">Click Top</button> <button @onclick="ClickHandler">Click Bot</button> @code { private void ClickHandler(MouseEventArgs e) { // capiamo il bottone cliccato sulla base della posizione } }
In Blazor è da sempre stato molto chiaro come impostare la route di una pagina, mentre non esisteva un modo diretto per modificare il titolo della stessa, analogo per esempio a ViewBag.Title di ASP.NET MVC. Per arrivare a questo scopo sono venute in suporto implementazioni custom e librerie, ma da oggi sarà possibile impostare il titolo seguendo due semplici step, già implementati nel template di default:
// program.cs using Microsoft.AspNetCore.Components.Web; builder.RootComponents.Add<HeadOutlet>("head::after");
Inserendo HeadOutlet chiediamo a Blazor di tenere in sincronia il nome specificato in ogni singola pagina con il tag title presente nell'head e di conseguenza il nome nella tab del browser. All'interno di ogni pagina dovremmo solo aggiungere l'elemento PageTitle e impostarne il valore
<PageTitle>Titolo pagina</PageTitle>
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.