2011-03-14 67 views
2

深入了解社区,了解最佳实践/最佳实施问题。手机网站上的完整网站链接

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

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

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

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

在此先感谢您的任何可能的答案。

回答

3

有几种不同的方法可以去。一对夫妇的想法:

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

感谢在51Degrees库的头上,我一定会使用th是为了更好地移动浏览器检测至少。 – 2011-03-14 17:34:10

+0

再次,我不能够感谢你提及51Degrees库。这绝对是伟大的! – 2011-03-23 20:40:18

1

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

的Cookie,URL PARAM ...

+0

是的,我现在正在设置一个cookie,然后从我的自定义移动视图引擎中检查cookie。再次感谢。 – 2011-03-23 20:41:56

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) 
+0

不,没有做区域。尽管如果我有的话可能会奏效。 – 2011-03-14 17:33:02

+0

出于好奇,你提到在一个解决方案中同时拥有完整网站和移动网站。你如何将它们分开(即需要的位),如果它不与区域分开? – 2011-03-14 17:35:12

+0

按文件夹分隔。因此,对于每个视图文件夹,其中都有一个相应的“Mobile”文件夹,其中包含移动视图。在“移动”文件夹下还可能存在专门针对移动设备的子文件夹,例如“iPhone”等。如果没有“设备特定”视图可用,则它将服务器视为“移动”视图。 – 2011-03-23 20:44:56