在网站使用了Jquery.Mobile,Layout布局的文件是Layout.Mobile.cshtml,所有页面都通过@RenderPage输出。
如:首页文件:Home.cshtml,移动版首页文件:Home.Mobile.cshtml,网站刚发布的时候用手机访问一切正常,@RenderPage中显示的Home.Mobile.cshtml的视图,可是过一会儿就显示的是Home.cshtml中的内容,被困扰几天了,有没有人遇到过这个问题?请赐教,谢谢!以下几点可以排除:
1、缓存,在视图上没有使用任何缓存
2、页面错误,因为每次发布或重启站点都会正常,过一会儿之后就自动调用桌面版的视图了。mvc4

解决方案 »

  1.   

    自已解决了。在网上发有人提出和我一样的问题:
    http://forums.asp.net/t/1824033.aspx/2/10?MVC+4+RC+Mobile+View+Cache+bug+这个问题是mvc4的一个bug,视图缓存bug,在移动视图访问过,在刚15分钟过期时如果有人先访问桌面视图,则以后移动端访问就显示桌面端的视图。微软提供了一个临时的解决方案:
    http://www.nuget.org/packages/Microsoft.AspNet.Mvc.FixedDisplayModes
    再提代其它几个解决方案:
    在global.asax中以下代码中加入
    protected void Application_Start()
    {
    AreaRegistration.RegisterAllAreas(); //以下是新添加的代码

    //第一种方法
    ViewEngines.Engines.OfType<RazorViewEngine>().First().ViewLocationCache = 
        DefaultViewLocationCache.Null;

    //第二种方法
    ViewEngines.Engines.OfType<RazorViewEngine>().First().ViewLocationCache = 
        new DefaultViewLocationCache(Cache.NoSlidingExpiration);
    }