Come sappiamo, da ASP.NET MVC 4 è stato introdotto il supporto alla gestione dei browser mobile, in particolare grazie ai DisplayModeProvider. Grazie a essi, possiamo realizzare due versioni di una qualsiasi view, MyView.cshtml e MyView.mobile.cshtml, e il runtime si preoccuperà di renderizzare la seconda nel caso in cui la pagina venga visitata da un dispositivo.
Alle volte, però, si preferisce comunque inserire in pagina un link che forzi la visualizzazione in modalità desktop. Per gestire questo scenario, possiamo sfruttare un extension method denominato SetOverriddenBrowser, contenuto nel namespace System.Web.WebPages, come nella action seguente:
public ActionResult ForceDesktop(string returnUrl)
{
this.HttpContext.SetOverriddenBrowser(BrowserOverride.Desktop);
return this.Redirect(returnUrl);
}
La chiamata a questa action può essere poi inserita direttamente nella nostra layout page, e visualizzata solo nel caso di un browser mobile:
@if (this.ViewContext.HttpContext.GetOverriddenBrowser().IsMobileDevice)
{
@Html.ActionLink("Full site", "ForceDesktop",
"Home", new { returnUrl = this.Request.Url.ToString() }, null)
}
Come possiamo notare, per determinare se il browser è di tipo mobile, invece di usare Request.Browser.IsMobileDevice, abbiamo sfruttato l'extension method GetOverriddenBrowser. Quest'ultimo, infatti, tiene conto dell'eventuale override ed è preferibile al primo, che invece rifletterà sempre le caratteristiche effettive del browser.
Quando viene invocato il metodo SetOverriddenBrowser, viene settato un cookie che fa sì che l'impostazione scelta persista anche nelle richieste successive. Per ripristinare il comportamento standard, è sufficiente invocare il metodo ClearOverriddenBrowser:
public ActionResult BackToDefault(string returnUrl)
{
this.HttpContext.ClearOverriddenBrowser();
return this.Redirect(returnUrl);
}
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
.NET Aspire per applicazioni distribuite
Introduzione ai web component HTML
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Supportare la sessione affinity di Azure App Service con Application Gateway
Escludere alcuni file da GitHub Secret Scanning
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
Creare un webhook in Azure DevOps
Recuperare l'ultima versione di una release di GitHub
Ricevere notifiche sui test con Azure Load Testing
I più letti di oggi
- domani dalle 14 non perdere #aspilive! 4 ore in streaming su tutte le novità di #vs2013. iscriviti su https://aspit.co/VS14-live
- abbiamo pubblicato l'agenda del prossimo #aspilive del 12/12 su #win8 e #wp8: https://aspit.co/w8-live iscrizioni sempre gratuite!
- Microsoft Security Bulletin di luglio 2008
- Eseguire una chiamata AJAX per inviare dati al server in Angular 2