2009-04-02 5 views
0

J'applique une fonctionnalité de recherche de base pour un site sur lequel je travaille. La manière la plus propre à ce jour semble être de créer une action avec une signature de méthode similaire à:Paramètre Persist QueryString sur RouteLink

// 
// GET: /BeautySchoolDropouts/Search?page=2&q=grease 

public ActionResult Search(int? page, string q) 
{ 
    //Implementation 
} 

J'ai un code, puis sur la page des résultats de recherche qui fournit les liens d'appel similaires à:

<%= Html.RouteLink("<< Previous Page", new { page = (Model.PageIndex - 1) }) %> 

<%= Html.RouteLink("Next Page >>", new { page = (Model.PageIndex + 1) }) %> 

Puisque je fournis les valeurs de route dans le cadre de la méthode RouteLink, est-il impossible de conserver q = quelle que soit la partie de la chaîne de requête? À l'heure actuelle, les liens génèrent/BeautySchoolDropouts/Search? Page = 2 seulement, ce qui cause évidemment des problèmes parce que je n'ai aucune idée de la raison de la recherche.

Répondre

1

Je pense que cela fonctionnerait en supposant que vous mettez la chaîne de requête dans le modèle quelque part (ce code utilise Model.QueryString; Notez quand je dis "chaîne de requête" ici, je parle du paramètre de requête, pas du HTTP chaîne de requête); Je ne pense pas que vous voulez persister toute la chaîne de requête, car alors vous obtiendriez? Page = 1 & q = quoi que ce soit & page = 2 & page = 3.

<%= Html.RouteLink("<< Previous Page", new { page = (Model.PageIndex - 1), q = Model.QueryString }) %> 

<%= Html.RouteLink("Next Page >>", new { page = (Model.PageIndex + 1), q = Model.QueryString }) %> 
+0

Oui, c'est un bon point à propos des pages multiples étant ajouté - je n'avais pas pensé à cela. – jerhinesmith

Questions connexes