我注意到在MVC4中,有一个名为Request.Browser.IsMobileDevice的内置方法。如何使用它来检查请求是否是移动设备然后重定向到控制器和/ mobile / index的操作?我想继承任何查询字符串和URL中的位置哈希。是否有内置的方法来做到这一点?
答案 0 :(得分:5)
通常,您不希望重定向到移动设备的不同控制器和操作,因为移动设备应该只需要相同模型的不同表示(您不希望复制控制器逻辑)。如果您使用.Mobile.cshtml
扩展名创建视图(对于C#Razor视图),MVC4将按惯例将此视图用于移动设备。
E.g。如果您在Home
文件夹中有此视图
Index.cshtml
将此视图添加到Home
文件夹
Index.Mobile.cshtml
MVC4将在移动设备上呈现Index.Mobile.cshtml
,在非移动设备上呈现Index.cshtml
。
也就是说,有时可能需要针对移动设备执行某些操作。例如。如果您希望移动设备使用其他_Layout.cshtml
,则可以将以下内容放入_ViewStart.cshtml
文件中
@{
if(Request.Browser.IsMobileDevice)
{
Layout = "~/Views/Shared/_Layout.Mobile.cshtml";
}
else
{
Layout = "~/Views/Shared/_Layout.cshtml";
}
}