有人提到,当浏览器是Mobile浏览器时,ASP.NET MVC4将请求_Layout.Mobile.cshtml。事实并非如此,也没有发生。
启用此功能需要进行哪些配置?
答案 0 :(得分:4)
根据ASP.NET团队(http://www.asp.net/whitepapers/mvc4-release-notes):
如果您的Views \ Shared文件夹同时包含_Layout.cshtml和 _Layout.mobile.cshtml模板,默认情况下,应用程序将在移动浏览器请求期间使用_Layout.mobile.cshtml,在其他请求期间使用_Layout.cshtml。
如果您有这些文件,那么可能问题是未正确检测到移动引擎,您是否可以告诉我们您是否将MVC 3项目升级到MVC 4或创建了新的MVC 4项目?如果是第一个,我建议你尝试创建一个新的MVC 4项目,看看问题是否仍然存在,如果它可能你的MVC 4安装有点腐败......
修改强> 您需要将Views \ Shared_Layout.cshtml复制到Views \ Shared_Layout.Mobile.cshtml。因为它似乎没有自动添加。
答案 1 :(得分:2)
我遇到了同样的问题,在这里找到了解决方案http://51degrees.mobi/Support/Blogs/tabid/212/EntryId/26/51Degrees-mobi-and-MVC4.aspx
干杯,
答案 2 :(得分:1)
首先......确保你有一个MVC4项目 - 从模板中清除,或者正确地遵循微软的升级说明。
与其他版本的MVC一样,项目结构按惯例工作,通常视图必须在特定的文件夹中 - 例如,您的FoodController的视图应该在Views -> Food
中,模板应该是在Views -> Shared
文件夹中。
假设_Layout.Mobile.cshtml
位于共享视图文件夹中,它可能区分大小写 - _Layout.mobile.cshtml
虽然我对此表示怀疑。
您是否使用Fiddler检查发送的请求(标头和UA)以及回复的响应?
答案 3 :(得分:1)
我有同样的问题,在我的情况下,我已经从MVC3升级到MVC4,但我想我错过了一些东西。有趣的是,它适用于iPhone浏览器,但不适用于Androids(至少其中一些)。 它在干净的mvc4项目中工作正常。 所以我不确定我错过了什么,我将再次阅读mvc3> 4升级说明,看看我错过了什么。如果我没有看到任何内容,我将尝试使用51devices实现或清理MVC4项目。
更新:再次按照升级说明进行操作,我没有看到任何错过的内容。 所以我按照这些说明最终实现了51devices方式: http://51degrees.mobi/Support/Blogs/tabid/212/EntryId/26/51Degrees-mobi-and-MVC4.aspx Android设备似乎现在触发移动显示器。 唯一的更新是使用:
`DisplayModeProvider.Instance.Modes.Insert`
而不是
`DisplayModes.Modes.Insert`
答案 4 :(得分:0)
确保您的移动浏览器使用正确的用户代理字符串发送,尤其是在使用移动浏览器模拟器时。我很幸运,新的chrome用户代理覆盖了控制台设置,以及一些firefox的插件。
答案 5 :(得分:0)
如果您的MVC应用程序中有区域,则需要修改每个区域内的_ViewStart.cshtml
。