2012-01-24 3 views
2

mvc3 및 RavenDB를 사용하고 있습니다. 예를 들어 /filter/{manufacturer}/{resolution}/{zoom} : http://ravendb.net/docs/client-api/advanced/faceted-searchRavenDB는 검색 및 mvc3에서 검색 경로/필터 URL을 작성했습니다.

을 나는이 URL 패턴을 갖고 싶은 : 여기에 설명 된 바와 같이 나는, 사용자 측면 검색을 사용하여 검색을 좁힐 수있는 필터 메뉴가 /filter/canon/6 목록을 의미 모든 카메라 제조업체 캐논 A를 6 메가 픽셀 (및 모든 줌 범위).

나는이 작업을하고 있지만 URL을 생성하는 데 문제가 있습니다. 패싯 값이 URL에서 사용하기에 안전하다면 이것은 에서만 작동합니다. 모든 앰퍼샌드, 대시와 소문자로 된 공백 등을 모두 바꿉니다. 즉, 내 filtermenu 링크 및 사이트 이동 경로에 '못생긴'이름이있는 으로 끝납니다.

사용자에게 패싯 값을 표시하기위한 이름을 사용하는 방법이 있습니까? 그래서 나는 다음과 같은 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 목록을 생성합니다. 사용자가 제품 페이지로 이동하면 다른 경로가 동일한 제품 페이지로 이어질 수 있으므로 tempdata를 통해 현재 경로 탐색 경로를 전달합니다. – Keesjan

답변

1

앤드류, 이 그래, 당신이 무엇을 원하는 아마입니다. 일반적으로 값을 제어하기 때문에 값을 제어 할 수 있지만 전 세계적으로 힘들게 할 이유가 없습니다. 값을 어딘가에 저장하고 그 사이에 값을 매핑 할 수 있습니다. 주위가 더 쉬울 것입니다.

관련 문제