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
Copiare automaticamente le secret tra più repository di GitHub
Come migrare da una form non tipizzata a una form tipizzata in Angular
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Hosting di componenti WebAssembly in un'applicazione Blazor static
Generare file per il download da Blazor WebAssembly
Reactive form tipizzati con FormBuilder in Angular
Disabilitare automaticamente un workflow di GitHub
Eseguire operazioni con timeout in React
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Gestire domini wildcard in Azure Container Apps
Utilizzare Model as a Service su Microsoft Azure
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente