2010-04-22 9 views
0

Ceci est une modification à une question que j'ai déjà posée sur ce forum.Deux paramètres dans asp.net mvc route

Mon action du contrôleur:

public ActionResult SearchResults(string searchTerm, int page)... 

Mon point de vue:

<%= Html.PageLinks((int)ViewData["CurrentPage"], (int)ViewData["TotalPages"], i => Url.Action("SearchResults", new { page = i }))%>... 

Les entrées de route:

routes.MapRoute(
      null, 
      "SearchResults", 
      new { controller = "Search", action = "SearchResults", page = 1 } // Defaults 
     ); 

     routes.MapRoute(
      "Search", 
      "SearchResults/Page{page}", 
      new { controller = "Search", action = "SearchResults" }, 
      new { page = @"\d+" } 
     ); 

Mon but est d'avoir des liens de pagination pour les résultats de recherche. Le problème est que lorsque je clique sur une page dans les liens de pagination, il me donne les résultats de recherche d'un terme de serach vide. Comment puis-je transmettre le paramètre de terme de recherche qui est une chaîne en plus du paramètre de numéro de page? Que dois-je mettre dans le routage?

Répondre

0

Je pense que si vous ajoutez des éléments supplémentaires dans votre dictionnaire de valeurs de route qui ne sont pas définis dans votre itinéraire, il les ajoutera comme paramètres.

Donc, si vous faites quelque chose comme:

Url.Action("SearchResults", new { page = i, searchterm = "YourSearchTerm" }) 

Il devrait cracher sur une route comme SearchResults/Page2?searchterm=yousearchterm

HTHS,
Charles

0

Avez-vous essayé cela dans l'aide Html.PageLinks?

Url.Action("SearchResults", new { searchTerm = "your query", page = i }) 

Notez l'ordre des paramètres.