Come sappiamo, nel template di default di Blazor, per creare delle pagine, basti aggiungere un file con estensione .razor all'interno della cartella Pages. Ma come possiamo creare delle aree contestuali, analoghe al concetto di Area di ASP.NET MVC?
In questo script vedremo la procedura per arrivare a ciò, e consentirci dunque di poter suddividere l'applicazione in vari settori, per esempio una parte pubblica e una privata di back-office, ognuna con un layout specifico e regole di autorizzazione differenti.
Partendo da un nuovo progetto Blazor, il primo passo sta nel creare una cartella all'interno di Pages, nella quale creare un file chimato _imports.razor.
Il contenuto di questo file sarà ereditato da tutte le pagine all'interno di questa sottocartella. Per esempio, possiamo specificare un layout differente:
@attribute [Authorize] @layout AnotherAppLayout
Nel nostro caso, tutte le pagine di questa "area" useranno il layout di AnotherAppLayout.razor. Inoltre, abbiamo anche sfruttato l'attributo Authorize per specificare che sarà necessaria l'autenticazione dell'utente per accedere a queste pagine.
A differenza delle Aree di ASP.NET MVC, tuttavia, queste pagine non ereditano il nome dell'area all'interno dell'URL, pertanto sarà nostra responsabilità indicarlo (se vogliamo) nel routing di ogni pagina:
@page "/backoffice/users" ...
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Generare file per il download da Blazor WebAssembly
Short-circuiting della Pipeline in ASP.NET Core
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Usare lo spread operator con i collection initializer in C#
Creare gruppi di client per Event Grid MQTT
Elencare le container images installate in un cluster di Kubernetes
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Utilizzare i primary constructor in C#
Utilizzare ChatGPT con Azure OpenAI