Disabilitare la layout page in ASP.NET MVC in caso di invocazione tramite AJAX

di Marco De Sanctis, in ASP.NET MVC,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi