某处提到,当浏览器是移动浏览器时,ASP.NET MVC4 将请求_Layout.Mobile.cshtml。事实并非如此,也没有发生。
启用此功能需要进行任何配置吗?
某处提到,当浏览器是移动浏览器时,ASP.NET MVC4 将请求_Layout.Mobile.cshtml。事实并非如此,也没有发生。
启用此功能需要进行任何配置吗?
根据 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。因为它似乎不是自动添加的。
I've hit the same issue, found the solution here http://51degrees.mobi/Support/Blogs/tabid/212/EntryId/26/51Degrees-mobi-and-MVC4.aspx
Cheers,
我有同样的问题,就我而言,我已经从 MVC3 升级到 MVC4,但我想我错过了一些东西。有趣的是它适用于 iPhone 浏览器,但不适用于 Android(至少其中一些)。它在干净的 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`
首先...确保您有一个 MVC4 项目 - 从模板中清除,或者正确遵循 Microsoft 的升级说明。
与其他版本的 MVC 一样,项目结构按惯例工作,通常视图必须位于特定文件夹中 - 例如,您的 FoodController 的视图应该在Views -> Food
其中,模板应该在Views -> Shared
文件夹中。
假设_Layout.Mobile.cshtml
在 Shared Views 文件夹中,它可能区分大小写 -_Layout.mobile.cshtml
尽管我对此表示怀疑。
您是否使用 Fiddler 检查发送的请求(标头和 UA)和返回的响应?
确保您的移动浏览器发送正确的用户代理字符串,尤其是在您使用移动浏览器模拟器时。我在控制台设置中覆盖了新的 chrome 用户代理以及一些用于 Firefox 的插件,这让我很幸运。
如果您的 MVC 应用程序上有区域,则需要修改_ViewStart.cshtml
每个区域的内部。