用于移动设备的displaymode,带有桌面视图,适用于asp.net mvc 4中的ipad

use*_*719 4 asp.net-mvc mobile outputcache viewengine

嗨,我有一个MVC 3应用程序,最近转换为mvc 4并添加了移动视图.我想为iPad专门为平板电脑添加桌面视图的移动显示模式(主要来自此处的流量).

我在我的代码中就是这样的

DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode()
            {
                ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf("iPad", StringComparison.OrdinalIgnoreCase) >= 0)
            });  
            DisplayModeProvider.Instance.Modes.Insert(1, new DefaultDisplayMode("Mobile")
            {
                ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf("Mobile", StringComparison.OrdinalIgnoreCase) >= 0)
            });   
Run Code Online (Sandbox Code Playgroud)

并设置输出缓存changebycustom如下所示

public override string GetVaryByCustomString(HttpContext context, string custom)
  {
            string strUserAgent = context.Request.UserAgent.ToLower();
            if (strUserAgent.Contains("ipad"))
            {
                return base.GetVaryByCustomString(context, custom);
            }

            if (Request.Browser.IsMobileDevice)
            {
                    return "mobile";               
            }
            return base.GetVaryByCustomString(context, custom);
}   
Run Code Online (Sandbox Code Playgroud)

我在移动设备和桌面设备上都使用相同的网址.

问题: 问题是在将应用程序部署到azure之后.1小时后,移动设备可以获取几个网址的桌面视图.存在不一致.

任何人都可以帮助我,我错了.我甚至关闭了 outputcache仍然是同样的问题.

Mag*_*ing 5

这是一个已知问题,我们最近发布了针对MVC 4的解决方法NuGet包:http: //nuget.org/packages/Microsoft.AspNet.Mvc.FixedDisplayModes.

解决方法是简单地将此NuGet包安装到您的项目中.但是,如果您的应用程序自定义已注册视图引擎的集合,则应确保引用

Microsoft.Web.Mvc.FixedRazorViewEngine
Run Code Online (Sandbox Code Playgroud)

要么

Microsoft.Web.Mvc.FixedWebFormViewEngine
Run Code Online (Sandbox Code Playgroud)

而不是默认的视图引擎实现.