2

我注意到在 MVC4 中,有一个名为 Request.Browser.IsMobileDevice 的内置方法。我如何使用它来检查请求是否是移动的,然后重定向到控制器和 /mobile/index 的操作?我想保留 URL 中的任何查询字符串和位置哈希。有没有内置的方法来做到这一点?

4

1 回答 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 回答