Je suis d'essayer la nouvelle ASP.NET MVC 4 Fonctionnalités Mobiles. J'ai fait une application simple avec un seul contrôleur HomeController) et d'un point de vue (Index). J'ai également ajouté une version mobile de la vue index.
Views/Home/Index.cshtml
Views/Home/Index.Mobile.cshtml
Lors du lancement de l'application dans un navigateur de bureau, l'affichage normal est indiqué comme prévu, cependant lorsque je lance l'application dans les Opera Mobile Emulator qu'un Samsung Galaxy S, j'ai toujours l'affichage normal et pas la version mobile.
la chaîne de l'agent utilisateur envoyés à partir de l'émulateur ressemble à ceci:
Opera/9.80 (Windows NT 6.1; Opera Mobi/23731; U; en) Presto/2.9.201 Version/11.50
Toutes les idées sur pourquoi cela ne fonctionne pas?
Mise à jour Grâce à @nemesv j'ai été en mesure de résoudre le problème, ici, c'est ma solution actuelle, nous espérons qu'il couvre la plus grande partie mobile scénarios.
public class MobileDisplayMode : DefaultDisplayMode
{
private readonly StringCollection _useragenStringPartialIdentifiers = new StringCollection
{
"Android",
"Mobile",
"Opera Mobi",
"Samsung",
"HTC",
"Nokia",
"Ericsson",
"SonyEricsson",
"iPhone"
};
public MobileDisplayMode() : base("Mobile")
{
ContextCondition = (context => IsMobile(context.GetOverriddenUserAgent()));
}
private bool IsMobile(string useragentString)
{
return _useragenStringPartialIdentifiers.Cast<string>()
.Any(val => useragentString.IndexOf(val, StringComparison.InvariantCultureIgnoreCase) >= 0);
}
}
Et j'ai Mondiale.asax
DisplayModeProvider.Instance.Modes.Insert(0, new MobileDisplayMode());