ASP.NET MVC4中的显示模式

时间:2012-01-10 11:03:00

标签: asp.net-mvc asp.net-mvc-4

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

启用此功能需要进行哪些配置?

6 个答案:

答案 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