在ASP.NET MVC4中在自定义移动显示模式和桌面模式之间切换

时间:2012-09-27 15:02:07

标签: asp.net-mvc mobile

我想创建一个切换到完整站点链接并切换到移动链接。我不想强迫它使用会话变量转到其中任何一个。我想知道是否可以使用ViewSwitcher Controller自动执行此操作。

以下是我用于自定义移动显示模式的内容

 public class MobileDisplayMode : DefaultDisplayMode
{
        public static readonly List<string> MobileList = new List<string>
    {
        "Android",
        "Mobile",
        "Opera Mobi",
        "Samsung",
        "HTC",
        "Nokia",
        "Ericsson",
        "SonyEricsson",
        "iPhone"
        ,"ipod"
        , "symbian"
         ,"android"
                        ,"windows ce"
                        ,"blackberry"
                        ,"palm"
                        ,"opera mini"
    };

    public MobileDisplayMode()
        : base("Mobile")
    {
        ContextCondition = (context => IsMobile(context, context.GetOverriddenUserAgent()));
    }

    private bool IsMobile(HttpContextBase context, string useragentString)
    {
        return context.Request.Browser.IsMobileDevice || MobileList.Any(val => useragentString.IndexOf(val, StringComparison.InvariantCultureIgnoreCase) >= 0);
    }
}

这是我的切换器代码 - 不用担心IsMobile属性,它的处理方式与移动显示模式相同

        if (IsMobile == mobile)
        {
            HttpContext.ClearOverriddenBrowser();
        }
        else
        {
            HttpContext.SetOverriddenBrowser(mobile ? BrowserOverride.Mobile :                         BrowserOverride.Desktop);
        }

1 个答案:

答案 0 :(得分:0)

将Jquery.Mobile.Mvc包添加到项目中。将创建移动布局。现在,每个移动视图都会显示指向桌面版本的链接。将下面的代码放在桌面视图中,这样用户就可以返回到移动设备。

@Html.ActionLink("Mobile view", "SwitchView", "ViewSwitcher", new { mobile = true, returnUrl = Request.Url.PathAndQuery }, new { rel = "external" })