0

我将 MVC 4 与此自定义 displaymodeprovider 一起使用。即使我将其设置为“false”,它仍然在 iPhone 上返回移动版本,但我想返回网站的常规版本。请帮忙

DisplayModeProvider.Instance.Modes.Insert(0, new
        DefaultDisplayMode("Mobile")
        {
            ContextCondition = (context => false)
        });

我在这段代码中设置了断点并调用它,尽管它仍然返回移动版本。

4

1 回答 1

1

最终我发现了问题

MVC 4 已经有了自己的“Mobile”前缀重定向。因此,要使用自定义逻辑,我们需要删除“Mobile”前缀的 DisplayModeProvider,如下所示:

        var mobileModel = DisplayModeProvider.Instance.Modes.FirstOrDefault(a => a.DisplayModeId == "Mobile");
        if (mobileModel != null)
        {
            DisplayModeProvider.Instance.Modes.Remove(mobileModel);
        }

        DisplayModeProvider.Instance.Modes.Insert(0, new
        DefaultDisplayMode("Mobile")
        {
            ContextCondition = (context => <USE ANY YOUR CUSTOM LOGIC>)
        });

对于希望他们的网站在 iPad、iPhone 或 Android 的两个版本中可用的人来说,这个答案将非常有用,例如,我们可以在 coockie 用户中存储我们应该在他的设备中显示哪个版本的网站。

于 2012-11-13T13:07:20.510 回答