Una funzionalità parecchio utile per creare componenti ridistribuibili in ASP.NET Core è denominata Razor Class Library: in buona sostanza, grazie a essa possiamo realizzare delle Aree ASP.NET MVC sfruttando Razor Pages e poi compilarle come dll che possiamo poi referenziare in altri progetti.
In Visual Studio 2019 esiste un template apposito che possiamo sfruttare per creare una Razor Class Library:
Ciò che otteniamo, è un progetto che assomiglia in tutto e per tutto a una versione semplificata di un progetto MVC, salvo per il fatto che l'output generato sia utilizzabile solo una volta referenziato in un vero e proprio sito web.
Nell'immagine in alto, abbiamo definito un'area denominata "Admin", che contiene una pagina Index.cshtml.
Aggiungiamo ora una reference alla class library da un progetto ASP.NET Core Razor Pages e eseguiamo l'applicazione. Semplicemente recandosi all'url https://localhost:5001/Admin, vedremo che effettivamente verrà renderizzata la pagina dalla library.
Come notiamo dall'immagine, però, per default le class library non ereditano la view di layout del progetto host. Per risolvere questo problema, è sufficiente creare un file denominato _ViewStart.cshtml nella root della nostra libreria, e impostare la proprietà Layout:
@{ Layout = "_Layout"; }
Una volta in esecuzione, infatti, l'engine Razor risolverà questa reference sfruttando il file _Layout.cshtml del progetto host, restituendo la pagina web con lo stesso look & feel del resto del sito.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Load test di ASP.NET Core con k6
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Eseguire attività basate su eventi con Azure Container Jobs
Gestire liste di tipi semplici con Entity Framework Core
Usare le collection expression per inizializzare una lista di oggetti in C#
Autenticarsi in modo sicuro su Azure tramite GitHub Actions