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