我正在使用新的ASP.NET MVC4Beta,并试图创建一个主要使用响应式设计的系统,但对于一个特定的视图,我使用移动视图来呈现移动设备的特定视图。
我的结构很简单,我有一个Show.cshtml,然后我有一个Show.mobile.cshtml。
如果我通过IIS Express使我的站点在我的开发机器上可用,这个视图可以正确地显示在iPad、iPhone、安卓手机和移动Opera上,如果我在我的开发机器上本地发布到IIS7.5,它也同样有效。
当我们部署到实时服务器时,问题来了,我们已经尝试在两个不同的服务器上部署。那么移动视图将只提供给iPhones,而不是其他移动设备。这一直都是这样的。我们设置的服务器是Windows2003/IIS6和Windows2008R2/IIS7.5,它在这两种服务器上都是一样的,只有iPhone在移动视图中得到了服务。
这可能是什么原因造成的?
我没有在global.asax中为此添加任何自定义内容。
更新
经过进一步的研究,我发现DisplayMode和移动视图的默认行为依赖于Request.Browser.IsMobileDevice标志。该标志反过来似乎依赖于.NET框架文件夹的Config/Browsers-文件夹中的.browser文件。
在我的开发机器上,我的.browser文件与我部署到的服务器上的文件不同。到目前为止,我已经尝试将我机器上的浏览器部署到web应用程序的app _Browsers-文件夹中,但这并没有解决我的问题。这可能是我们要走的路吗?
发布于 2012-05-08 19:33:12
这并不是对你问题的完整回答,但我认为它仍然会有所帮助。
根据我的经验,ASP.NET不太擅长解决浏览器功能问题。因此,我可以建议您研究一下51Degrees.Mobi Foundation。Steven Sanderson在这方面有一篇很好的博客文章:
Using 51Degrees.Mobi Foundation for accurate mobile browser detection on ASP.NET MVC 3
我不完全确定,但是您应该能够很容易地将其连接到ASP.NET MVC4 DisplayMode基础设施。这是一个很好的资源:
发布于 2013-07-24 20:10:58
我认为我在下面给出的解决方案就是答案(它在短时间内有效),但过了一段时间后它仍然切换到了错误的视图。
像互联网的其余部分一样,我安装了51 Degrees from Nuget,它工作得很好,而且很容易设置
(下面的方法不适用于我,但可能适用于您) http://www.nuget.org/packages/Microsoft.AspNet.Mvc.FixedDisplayModes
看起来这是一个已知的错误:http://aspnetwebstack.codeplex.com/workitem/280?PendingVoteId=280
根据上面的codeplex链接,记住要确保这一点:
对于自定义已注册视图引擎列表的一小部分项目(例如,在Global.asax中),您应该确保引用的是Microsoft.Web.Mvc.FixedRazorViewEngine或Microsoft.Web.Mvc.FixedWebFormViewEngine,而不是核心运行时二进制
中附带的类
https://stackoverflow.com/questions/10494419
复制相似问题