Quando si vogliono supportare skin differenti per il nostro sito web, ad esempio per proporne una versione ottimizzata per dispositivi mobili, la soluzione più semplice è quella di realizzare una master page (o, per meglio dire, una layout view, nel caso di Razor) ad-hoc. Essa potrà così contenere i riferimenti ai CSS adeguati, link a eventuali file javascript ed eventualmente presentare un proprio layout.
In Razor, abbiamo la possibilità di dotare il nostro sito di quante layout page vogliamo, referenziando quella desiderata all'interno delle singole view, anteponendo il codice seguente al vero e proprio markup HTML.
@{ Layout = "~/Views/Shared/_Layout.cshtml"; }
Solitamente, invece che replicare questo codice per ogni view, si utilizza un file particolare, denominato _ViewStart.cshtml e contenuto all'interno del folder[] Shared, che viene eseguito automaticamente in fase di rendering.
Dato che Razor non pone alcun vincolo alla complessità del contenuto di _VieswStart.cshtml, possiamo sostituire il codice precedente con una versione che verifichi se la richiesta proviene da un dispositivo mobile, impostando poi una layout view specifica per questo contesto.
@{ if (this.Context.Request.Browser.IsMobileDevice) { Layout = "~/Views/Shared/_MobileLayout.cshtml"; } else { Layout = "~/Views/Shared/_Layout.cshtml"; } }
Tecniche simili possono essere utilizzate per soddisfare anche altre tipologie di requisiti: ad esempio potremmo fare in modo che la skin del sito dipenda dal particolare profilo utente collegato o da un'impostazione che recuperiamo, magari sfruttando la cache, da un database.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Paginare i risultati con QuickGrid in Blazor
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Utilizzare il trigger SQL con le Azure Function
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Usare un KeyedService di default in ASP.NET Core 8
Hosting di componenti WebAssembly in un'applicazione Blazor static
Usare lo spread operator con i collection initializer in C#
Configurare policy CORS in Azure Container Apps
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Eseguire attività basate su eventi con Azure Container Jobs
I più letti di oggi
- Utilizzare Docker Compose con Azure App Service
- Utilizzare QuickGrid di Blazor con Entity Framework
- Modernizzare le applicazioni WPF e Windows Forms con Blazor
- ASP 3 per esempi
- annunciato #netstandard 2.1. .NET Core lo supporterà a partire da #netcore3, così come le prossime versione di #xamarin, #mono e #unity.il supporto per #netfx 4.8, invece, non ci sarà. https://aspit.co/bq2