2011-03-14 82 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