ASP.NET MVC 4 Fonctionnalités Mobiles

Je suis à essayer les nouvelles 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 le 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

Aucune idée de 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());
  • la vie de veille. sa fait stupide que le tutoriel ne dis pas cela. Il se sent juste la moitié cul de microsoft côté. Généralement, ils sont sur le point avec leurs tutoriels.
  • Merci, si StringCollection semble être l'un des plus inutiles les classes jamais. Non seulement offre-t-il rien dans cet exemple de code, ni les performances, vous devez écrire du code supplémentaire (Cast<string>) pour le plaisir de l'utiliser. La remplacer par une Liste<string>, et vivre heureux pour toujours
InformationsquelleAutor Pelle | 2012-03-08