【问题标题】:Full Site link on Mobile Site移动网站上的完整网站链接
【发布时间】:2011-03-14 14:34:29
【问题描述】:

在此处与社区联系以获取最佳实践/最佳实施问题。

我在一个大型项目中使用 MVC3,MVC3 站点将在一个解决方案中同时处理我们的完整站点和移动站点。我创建了一个自定义视图引擎来处理将移动请求映射到适当的移动视图。

最近弹出的一个要求是在网站的移动部分有一个“完整网站”链接,以允许移动用户查看完整网站(实际上是能够来回切换)。

有人对可能的快速解决方案有任何见解或做过类似的事情吗?

我有一个单独的布局文件(母版页)用于显示“完整站点”链接的移动视图。

提前感谢任何可能的答案。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    您可以采用几种不同的方式。几个想法:

    1. 当用户单击“查看经典”或“查看移动”时存储一个 cookie,您的自定义视图引擎可以在定向到相应视图之前检查该 cookie。
    2. 查看处理移动检测和重定向的51Degrees.mobi .NET 库。有一个功能可以用来跟踪用户的偏好(参见 firstRequestOnly 配置选项)。 Steve Sanderson 有一篇关于在 MVC3 中实现这个库的很好的博客概述:http://blog.stevensanderson.com/2010/12/17/using-51degreesmobi-foundation-for-accurate-mobile-browser-detection-on-aspnet-mvc-3/

    【讨论】:

    • 感谢 51Degrees 库的提醒,我肯定会至少使用它来更好地检测移动浏览器。
    • 再次感谢您提及 51Degrees 库。真是太棒了!!
    【解决方案2】:

    这应该是一个参数,视图引擎需要知道用户的偏好。所以它会像现在一样选择默认视图,但如果用户偏好与默认选项不匹配,则会检查一些参数。

    Cookie、URL 参数...

    【讨论】:

    • 是的,我现在使用它来设置 cookie,然后从我的自定义移动视图引擎中检查 cookie。再次感谢。
    【解决方案3】:

    也许我误解了你的问题,但如果你问的是如何链接网站的两个“版本”,这不是像拥有两个Areas 一样“简单”吗?

    每个区域都会定义自己的路线,移动区域的路线开始于,例如:

    context.MapRoute(
            "Mobile_Default",
            "mobile/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
    

    所以很容易从一个区域链接到另一个区域:

    @Html.ActionLink("non-mobile site", "index", "home", new { area = "" }, null)
    

    反之亦然:

    @Html.ActionLink("Mobile site", "index", "home", new { area = "mobile" }, null) 
    

    【讨论】:

    • 出于好奇,您提到在一个解决方案中同时拥有完整网站和移动网站。如果不是区域,您如何将它们分开(即需要的位)?
    • 以文件夹分隔。因此,对于每个视图文件夹,其中都有一个相应的“Mobile”文件夹,其中包含移动视图。 “Mobile”文件夹下还可以有特定于移动设备的子文件夹,例如“IPhone”等。如果没有可用的“设备特定”视图,它将提供“Mobile”视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多