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
Microsoft Fabric: la piattaforma unificata per l'ecosistema dati moderno
Personalizzare le pagine di errore su Azure App Service
Utilizzare il Null conditional assignment di C# 14
Agentic Workflows in GitHub
Modificare lo stile in una QuickGrid Blazor
Centralizzare e governare MCP server e Skill con Azure API Center
Lockfiles per le GitHub Actions
Effettuare un clone parziale di un repository di GitHub
Personalizzare i parametri del CSS Scroll Snap
Utilizzare le View Transition API di JavaScript
Configurare OpenTelemetry per Application Insights su ASP.NET Core
Utilizzo delle Feature flag in ASP.NET Core
I più letti di oggi
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Accedere a dati esposti con WebService con Silverlight 1.0
- Utilizzare dati in formato XML in XAML


