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
Proteggere le risorse Azure con private link e private endpoints
Miglioramenti agli screen reader e al contrasto in Angular
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Ordine e importanza per @layer in CSS
Potenziare Azure AI Search con la ricerca vettoriale
Generare la software bill of material (SBOM) in GitHub
Migliorare la sicurezza dei prompt con Azure AI Studio
Definire stili a livello di libreria in Angular
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Usare un KeyedService di default 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