我正在使用mvc3和RavenDB。我有一个用户可以缩小的过滤器菜单 他们使用分面搜索进行搜索,如下所述: http://ravendb.net/docs/client-api/advanced/faceted-search
我喜欢这种网址格式:/filter/{manufacturer}/{resolution}/{zoom}
例如:/filter/canon/6
表示列出制造商正典的所有相机
百万像素6(和所有变焦范围)。
我有这个工作,但我遇到生成URL的麻烦。这只会 如果facet值可以安全地用于URL,则可以工作。替换所有的&符号, 空间等用短划线和小写的一切。这意味着我结束了 在我的filtermenu链接和面包屑中有'丑陋'的名字。
是否可以使用友好名称向用户显示构面值? 所以我可以创建这样的网址:
<a href="/filter/canon/">Canon USA (12)</a>
<a href="/filter/canon/6/">6 megapixels (5)</a>
我能想到的一个解决方案是将过滤器存储为文档 并只搜索一个facet值来检索其displayname。
过滤器文档可能如下所示:
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 :(得分:1)
安德鲁, 是的,这可能就是你想要做的。一般来说,既然你控制了价值,就可以控制那些价值,但没有理由在全球范围内努力。您可以将值存储在某处并在它们之间进行映射。 它会更容易。