首页 新闻 会员 周边

mvc4中使用了jquery.mobile,为什么有时候视图是移动版的,有时候又显示是桌面版的呢?

0
悬赏园豆:15 [已解决问题] 解决于 2013-07-23 18:33

我比较过用手机访问正常的时候的userAgent和访问显示桌面版的时候的UserAgent是一样的。

有一个特点是刚发布或重启的时候,手机访问或者在chrome模拟移动端访问都是正常的,过了几个小时候后再访问就变成桌面版了,然后就一直是桌面版的。

 好像是RenderBody里的视频有问题,比如首页,有时候RenderBody输出的是Home.cshtml,有时候输出的是Home.Mobile.cshtml

问题补充:

有可能是IIS7的问题吗? 请问如何升级到IIS7.5?

小徐的博客的主页 小徐的博客 | 初学一级 | 园豆:15
提问于:2013-07-23 11:35
< >
分享
最佳答案
0

将Windows Server 2008升级至Windows Server 2008 R2,可以直接升级,不用重装系统

收获园豆:15
dudu | 高人七级 |园豆:30994 | 2013-07-23 18:11
其他回答(1)
0

在网上发有人提出和我一样的问题:
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);
}

小徐的博客 | 园豆:15 (初学一级) | 2013-07-23 18:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册