2013-09-25 3 views
1

Im создает приложение MVC4 для выполнения поиска по вики-документу. Все работает отлично, но я не смог найти лучший способ сделать грани связанными.Сделать грань Solrnet Linkeble с Solrnet?

я precent фасетки на моей стартовой странице, чтобы сделать его легче найти ключевые слова, которые ищут:

   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/[email protected](ModelItem => item.Name)">@Html.DisplayFor(ModelItem => item.Name), @Html.DisplayFor(ModelItem => item.Count)</a></td> <br/> 
    } 

Но с этот подход, когда пользователь нажимает на ссылку, что происходит, это то, что я посылаю слово фасета обратно контроллеру, который запускает поиск по этому ключевому слову, так как я знаю, что он существует.

Я знаю, что это нехороший путь, поэтому я пытаюсь найти лучший способ, и, поскольку я из Швеции, ссылка сломана, если я использую любое из «åäö». Его можно обрабатывать с помощью javascript, но он выглядит очень уродливым, так как я могу сделать это лучше?

Я смотрел на запрос фильтра, но как сделать его связанным?

С уважением Джонатан

ответ

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/[email protected](item.Name)">@Html.DisplayFor(ModelItem => item.Name), @Html.DisplayFor(ModelItem => item.Occurrences)</a></td> <br/> 
    }