2012-01-24 17 views
2

我正在使用mvc3和RavenDB。我有一個過濾器菜單中,用戶可以使用面搜索縮小 他們的搜索,如下所述: http://ravendb.net/docs/client-api/advanced/faceted-searchRavenDB分面搜索和創建mvc3中的麪包屑/過濾網址

我喜歡這個URL模式:/filter/{manufacturer}/{resolution}/{zoom} 例如:/filter/canon/6意味着列表中的所有相機 一個製造商的佳能6百萬像素(以及所有變焦範圍)。

我有這個工作,但我遇到了生成網址的麻煩。這將只有 工作,如果facet值可以安全地使用在一個URL例如。用短劃線和小寫全部替換所有&符號, 空格等。這意味着我在我的過濾器菜單鏈接和麪包屑中輸入'醜陋'的名字結束了 。

有沒有辦法讓友方名稱向用戶顯示方面值? 這樣我就可以像這樣創建URL:

<a href="/filter/canon/">Canon USA (12)</a> 
<a href="/filter/canon/6/">6 megapixels (5)</a> 

一個解決方案,我能想到的是存儲過濾器作爲文件 ,只是搜索方面值檢索其顯示名稱。

過濾文檔可以是這樣的:

var filter = new Filter 
       { 
        DisplayName = "Manufacturer" , 
        Slug = "manufacturer" , 
        Items = new List<FilterItem> 
         { 
          new FilterItem() { DisplayName = "Canon USA" , Slug = "canon" } ,      
          new FilterItem() { DisplayName = "Photo's & more" , Slug = "photos-and-more" } 
         } 
       } ; 
+0

你用什麼來實現麪包屑菜單? ASP.NET MVC SiteMap提供程序?我感興趣,因爲我找不到任何樣本...... –

+0

我沒有使用站點地圖提供程序。因爲我的路線大多是線性/可預測的,所以我在我的控制器中生成一個URL列表,這些URL由佈局文件中的局部視圖呈現。當用戶跳轉到產品頁面時,我通過tempdata傳遞當前的麪包屑路徑,因爲不同的路徑可能會導致產品頁面相同。 – Keesjan

回答

1

安德魯, 是的,這可能是你想要做什麼。一般來說,既然你控制了價值觀,你可以控制這些價值,但沒有理由在全球範圍內努力。您可以將值存儲在某個地方並在它們之間映射。 四處都會更容易。