2010-04-12 2 views
2

J'utilise le pager fourni par Martijn Boland pour implémenter le paging dans mon application Asp.Net Mvc 2.Comment faire une page tout en conservant les valeurs de la chaîne de requête dans ASP.Net Mvc 2

Mon formulaire utilise la méthode GET pour envoyer tous les paramètres à la chaîne de requête, c'est un formulaire de recherche avec plusieurs éléments de formulaire.

<% using (Html.BeginForm("SearchResults", "Search", FormMethod.Get)) 
     {%> 

Sur le SearchResults Voir je suis en train de mettre en œuvre la pagination:

<div class="pager"> 
    <%= Html.Pager(Model.PageSize, Model.PageNumber, Model.TotalItemCount, 
     new { Request.QueryString })%> 
</div> 

Le Html.Pager a quelques que je suis surcharge pas trop clair sur la façon d'utiliser. Le Request.QueryString rend le regard querystring comme ceci:

http://localhost:1155/Search/SearchResults?QueryString=Distance%3D10%26txtZip%3D%26cb&page=2 

devrait-il pas être comme ça?

http://localhost:1155/Search/SearchResults?Distance=20&txtZip=10021&page=2 
+0

J'ai énuméré deux des paramètres de chaîne querystring, il y en a plusieurs autres et j'essaie d'éviter de les énumérer séparément. – Picflight

+0

Avez-vous vu ma modification, vous devez transtyper la QueryString dans un IDictionnary et la transmettre au constructeur ne RouteValueDictionnary –

Répondre

1

je pense serait d'écrire votre téléavertisseur comme celui-ci

<%= Html.Pager(Model.PageSize, Model.PageNumber, Model.TotalItemCount, new { Distance = Request["Distance"], txtZip = Request["txtZip"] })%> 

mais il est seulement une supposition, je ne l'ai jamais utilisé que ...

Edit: voir ASP.Net MVC Keeping action parameters between postbacks vous devez donc créer un RouteValueDictionary à partir de QueryString qui est un NameValueCollection.

+0

Il y a plus de deux paramètres, donc j'essaie d'éviter de les énumérer séparément. – Picflight

+1

Je voudrais tellement deuxième cette réponse (la partie Edit). Créez une fonction d'assistance pour convertir les paramètres querystring en RouteValueDictionary et alimenter le Pager. Peut-être ASP.NET MVC contient déjà une telle fonction? – martijnboland

+0

+1 pour répondre Martijn. – Picflight