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
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Generare file per il download da Blazor WebAssembly
Creare gruppi di client per Event Grid MQTT
Eseguire una query su SQL Azure tramite un workflow di GitHub
Copiare automaticamente le secret tra più repository di GitHub
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Implementare l'infinite scroll con QuickGrid in Blazor Server
Eseguire query verso tipi non mappati in Entity Framework Core
Reactive form tipizzati con FormBuilder in Angular
Potenziare Azure AI Search con la ricerca vettoriale
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Eseguire una GroupBy per entity in Entity Framework
I più letti di oggi
- Miglioramenti nelle performance di Angular 16
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- HTML5 con CSS e JavaScript
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)