Мобильные функции ASP.NET MVC 4

Я пробую новые мобильные функции ASP.NET MVC 4. Я сделал простое приложение с одним контроллером (HomeController) и одним представлением (Index). Я также добавил мобильную версию индексного представления.

Views/Home/Index.cshtml
Views/Home/Index.Mobile.cshtml

При запуске приложения в настольном браузере отображается обычный вид, как и ожидалось, однако, когда я запускаю приложение в Opera Mobile Emulator как Samsung Galaxy S, я по-прежнему получаю обычный вид, а не мобильная версия.

строка пользовательского агента, отправленная из эмулятора, выглядит так:

Opera/9.80 (Windows NT 6.1; Opera Mobi/23731; U; en) Presto/2.9.201 Version/11.50

Есть идеи, почему это не работает?

Обновление Благодаря @nemesv мне удалось решить проблему, вот мое текущее решение, надеюсь, оно будет охватывать большинство мобильных сценариев.

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()
                    .Any(val => useragentString.IndexOf(val, StringComparison.InvariantCultureIgnoreCase) >= 0);
    }
}

And i Global.asax

DisplayModeProvider.Instance.Modes.Insert(0, new MobileDisplayMode());

32
задан Pelle 9 March 2012 в 21:39
поделиться