4

某处提到,当浏览器是移动浏览器时,ASP.NET MVC4 将请求_Layout.Mobile.cshtml。事实并非如此,也没有发生。

启用此功能需要进行任何配置吗?

4

6 回答 6

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。因为它似乎不是自动添加的。

于 2012-01-10T16:16:36.840 回答
1

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,

于 2012-02-01T15:18:50.447 回答
1

我有同样的问题,就我而言,我已经从 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`
于 2013-03-24T00:37:09.080 回答
1

首先...确保您有一个 MVC4 项目 - 从模板中清除,或者正确遵循 Microsoft 的升级说明。

与其他版本的 MVC 一样,项目结构按惯例工作,通常视图必须位于特定文件夹中 - 例如,您的 FoodController 的视图应该在Views -> Food其中,模板应该在Views -> Shared文件夹中。

假设_Layout.Mobile.cshtml在 Shared Views 文件夹中,它可能区分大小写 -_Layout.mobile.cshtml尽管我对此表示怀疑。

您是否使用 Fiddler 检查发送的请求(标​​头和 UA)和返回的响应?

于 2012-02-01T17:48:55.303 回答
0

确保您的移动浏览器发送正确的用户代理字符串,尤其是在您使用移动浏览器模拟器时。我在控制台设置中覆盖了新的 chrome 用户代理以及一些用于 Firefox 的插件,这让我很幸运。

于 2012-03-05T18:46:08.113 回答
0

如果您的 MVC 应用程序上有区域,则需要修改_ViewStart.cshtml每个区域的内部。

于 2015-06-02T16:13:32.663 回答