1

我正在构建一个 MVC4 应用程序来对 wiki 文档进行搜索。一切都很好,但我一直无法找出使方面可链接的最佳方法。

我在我的起始页上显示了各个方面,以便更轻松地找到您要查找的关键字:

             var products = solr.Query(SolrQuery.All,
                                  new QueryOptions {
                                      Rows = 0,
                                      Facet = new FacetParameters {
                                          Queries = new[] { new SolrFacetFieldQuery("products") }
                                      }
                                  });
        foreach(var facet in products.FacetFields["products"]) {
            var catagoryFacet = new CategoryFacet(facet.Key, facet.Value);
            facetProductList.Add(catagoryFacet);
        }

然后我像这样遍历视图中的列表:

<h2> Products: </h2>

@foreach (var facet in Model)
{
    foreach(var item in facet.products) {    
        <td><a href="http://localhost:5000/Home/FreeSearch?search=@Html.DisplayFor(ModelItem => item.Name)">@Html.DisplayFor(ModelItem => item.Name), @Html.DisplayFor(ModelItem => item.Count)</a></td> <br/>
    }   

但是使用这种方法,当用户单击链接时,我会将 facet 的单词发送回控制器,该控制器会触发对该关键字的搜索,因为我知道它存在。

我知道这是一种不好的方法,所以我试图找出更好的方法,并且由于我来自瑞典,如果我使用任何“åäö”,链接就会断开。可以通过 javascript 处理,但感觉非常难看,那么我怎样才能以更好的方式做到这一点?

我一直在查看过滤器查询,但如何使其可链接?

问候乔纳森

4

1 回答 1

0

我通过简单地将 Url.Encode 放在 Item.Name 上来解决它。现在搜索工作,如我所愿。

<h2> Products: </h2>

@foreach (var facet in Model)
{
    foreach(var item in facet.ProductFacets) {    
        <td><a href="http://localhost:5000/Home/FreeSearch?search=@Url.Encode(item.Name)">@Html.DisplayFor(ModelItem => item.Name), @Html.DisplayFor(ModelItem => item.Occurrences)</a></td> <br/>
    }
于 2013-09-25T12:54:21.897 回答