我注意到在 MVC4 中,有一个名为 Request.Browser.IsMobileDevice 的内置方法。我如何使用它来检查请求是否是移动的,然后重定向到控制器和 /mobile/index 的操作?我想保留 URL 中的任何查询字符串和位置哈希。有没有内置的方法来做到这一点?
问问题
1057 次
1 回答
5
通常,您不希望为移动设备重定向到不同的控制器和操作,因为移动设备应该只需要同一模型的不同表示(您不希望复制控制器逻辑)。如果您使用扩展名创建视图.Mobile.cshtml
(用于 C# Razor 视图),则 MVC4 将按照惯例将此视图用于移动设备。
例如,如果您的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";
}
}
于 2012-07-08T15:50:45.750 回答