如何在MVC4中使用所有查询字符串和哈希重定向移动设备?

Tru*_*an1 2 c# asp.net-mvc mobile c#-4.0 asp.net-mvc-4

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

Kev*_*mey 5

通常,您不希望重定向到移动设备的不同控制器和操作,因为移动设备应该只需要相同模型的不同表示(您不希望复制控制器逻辑).如果您使用.Mobile.cshtml扩展名创建视图(对于C#Razor视图),MVC4将按照惯例将此视图用于移动设备.

例如,如果您的Home文件夹中有此视图

Index.cshtml
Run Code Online (Sandbox Code Playgroud)

将此视图添加到您的Home文件夹中

Index.Mobile.cshtml
Run Code Online (Sandbox Code Playgroud)

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";
    }
}
Run Code Online (Sandbox Code Playgroud)