Le moderne applicazioni web, per migliorare le prestazioni e garantire all'utente una migliore esperienza di utilizzo, spesso caricano dinamicamente porzioni di pagina solo quando effettivamente necessario, tramite una chiamata AJAX. Un esempio tipico è quello della visualizzazione di un'informazione di dettaglio o di una maschera di edit all'interno di una popup o di una sezione del layout.
In queste situazioni, abbiamo bisogno del solo markup della view, e vogliamo ovviamente evitare che quest'ultima venga renderizzata senza la layout page. Come sappiamo, in ASP.NET MVC possiamo disabilitare la layout page per una particolare view impostando a null il path della sua proprietà Layout:
@{ Layout = null; } @* markup qui *@ <h1>View caricata in AJAX</h1>
Possiamo però evitare di replicare questa impostazione per ogni view che debba essere caricata tramite AJAX, inserendo il codice seguente all'interno del file _ViewStart.cshtml, che viene eseguito prima di ogni rendering:
@{ if (this.ViewContext.HttpContext.Request.IsAjaxRequest()) { Layout = null; } else { Layout = "~/Views/Shared/_Layout.cshtml"; } }
In pratica, a ogni invocazione, viene verificato se questa provenga da una chiamata AJAX e in base a questa condizione, viene attivata o meno la layout page.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Migrare una service connection a workload identity federation in Azure DevOps
Utilizzare i primary constructor di C# per inizializzare le proprietà
Generare file per il download da Blazor WebAssembly
Implementare il throttling in ASP.NET Core
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Inizializzare i container in Azure Container Apps
C# 12: Cosa c'è di nuovo e interessante
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Reactive form tipizzati con modellazione del FormBuilder in Angular
Gestire errori funzionali tramite exception in ASP.NET Core Web API