移动网站上的完整站点链接

时间:2011-03-14 14:34:30

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

在这里与社区联系,寻求最佳实践/最佳实施问题。

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

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

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

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

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

3 个答案:

答案 0 :(得分:3)

你可以采取几种不同的方式。一些想法:

  1. 当用户点击“查看经典”或“查看移动设备”时,可以存储Cookie,自定义视图引擎可以在指向相应视图之前查看该视图。
  2. 查看处理移动检测和重定向的51Degrees.mobi .NET库。有一个功能可用于跟踪用户的首选项(请参阅firstRequestOnly配置选项)。史蒂夫桑德森有一篇关于在MVC3中实现这个库的博客概述:http://blog.stevensanderson.com/2010/12/17/using-51degreesmobi-foundation-for-accurate-mobile-browser-detection-on-aspnet-mvc-3/

答案 1 :(得分:1)

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

Cookie,网址参数......

答案 2 :(得分:0)

也许我误解了你的问题,但是如果你问如何链接网站的两个“版本”,那么它是否会像拥有两个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)