2010-11-29 5 views
4

J'ai suivi ce tutoriel avec succès: http://www.hanselman.com/blog/MixMobileWebSitesWithASPNETMVCAndTheMobileBrowserDefinitionFile.aspxMVC3 Razor - Existe-t-il un moyen de modifier la mise en page en fonction de la demande du navigateur?

Tous les affichages sont rendus avec succès lorsque j'accède à la page avec un appareil mobile. Mais, ils sont rendus avec une mauvaise mise en page (masterpage AKA).

Je la structure suivante: /Views/Shared/Mobile/_Layout.cshtml /Views/Shared/_Layout.cshtml

Le problème est, je dois mettre la déclaration suivante dans chaque vue:

Layout = "~/Views/Shared/Mobile/_Layout.cshtml"; 

Y a-t-il un endroit où je peux placer ma logique pour rendre une mise en page sur une autre?

si (normalAccess) render _Layout.cshtml normale autre (MobileAccess) rendent /Mobile/_Layout.cshtml

Je ne pouvais pas trouver où.

Merci pour toute aide.

+0

Pour votre information, Scott a publié une entrée mis à jour avec des améliorations importantes à cette approche (la réponse acceptée ci-dessous est toujours valable, bien): http://www.hanselman.com/blog/ABetterASPNETMVCMobileDeviceCapabilitiesViewEngine.aspx –

Répondre

7

Il un bon article à http://weblogs.asp.net/scottgu/archive/2010/10/22/asp-net-mvc-3-layouts.aspx

Vous pouvez apparemment créer un fichier dans votre dossier \ Views appelé _ViewStart.cshtml où vous pouvez mettre votre logique de mise en page pour être utilisé par toutes les vues

L'échantillon _ViewStart. cshtml est tout simplement:

@{ 
    Layout = "~/Views/Shared/SiteLayout.cshtml"; 
} 

l'article indique également: « Parce que le _ViewStart.cshtml nous permet d'écrire du code, nous pouvons rendre notre option logique de sélection de mise en page plus riche qu'un simple ensemble de propriétés de base. Par exemple: nous pouvons modifier le modèle de mise en page que nous utilisons en fonction du type d'appareil accédant au site - et disposer d'un téléphone ou d'une tablette optimisés pour ces appareils, et d'une mise en page optimisée pour PC/ordinateurs portables.

Il pourrait vous prendre quelques jeu avec pour obtenir ce fonctionnement, je n'ai pas une installation de 2010 à portée de main pour l'essayer cependant.

Questions connexes