Я использую mvc3 и RavenDB. У меня есть меню фильтров, где пользователи могут сузить
их поиск с использованием граненого поиска, как описано здесь:
http://ravendb.net/docs/client-api/advanced/faceted-search
Мне нравится этот шаблон URL: /filter/{manufacturer}/{resolution}/{zoom}
Например: /filter/canon/6
означает список всех камер производителя канона с
мегапиксель 6 (и все диапазоны увеличения).
У меня это работает, но я сталкиваюсь с проблемами при создании URL. Это будет только
работать, если значения фасетов безопасны для использования в 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" }
}
} ;