2008-12-23 8 views
1

J'ai une méthode d'action qui retourne une PagedList <> après la requête POST d'un formulaire.
Je voudrais ajouter la pagination à cette page, mais tous les scénarios d'appel ne semblent travailler avec les requêtes GET.Meilleur moyen de mettre en page la page asp.net-mvc avec POST

Actuellement, la seule façon d'ajouter des commandes de pagination consiste à ajouter un groupe de formulaires avec un bouton pour naviguer dans la page. Cela aura l'air moche (tous les boutons de formulaire) et imposera beaucoup de frais généraux parce que chacun des formulaires aura besoin d'un tas de champs cachés (environ 10) pour transférer les paramètres nécessaires.

Existe-t-il un moyen propre d'ajouter environ 12 paramètres optionnels à une requête GET? Ou peut-être y a-t-il un moyen encore meilleur?

Répondre

0

La façon d'ajouter de nombreux paramètres facultatifs à une requête GET est d'utiliser des paramètres de chaîne de requête. Rendez les arguments de votre action de contrôleur NULL, et l'infrastructure MVC les remplira avec des paramètres de chaîne de requête si l'utilisateur les fournit, et les laissera NULL dans le cas contraire.

Je ne crois pas que l'utilisation de POST pour la pagination est, en général, approprié. POST est destiné à mettre à jour une ressource de serveur. La pagination ne fait pas ça.

+0

La radiomessagerie est un élément de navigation. Si la page Web contient à la fois un formulaire et une liste paginée, sur laquelle l'application sur laquelle je travaille actuellement, la pagination devra POST et mettre à jour le serveur. –

+1

Mon application fait cela aussi, mais: Ce sont deux préoccupations distinctes. (1) Le POST met à jour le serveur. (2) Vous allez quelque part après le poste. Il est avantageux de le faire avec un GET. Voir: http://blog.eworldui.net/post/2008/05/ASPNET-MVC---Using-Post2c-Redirect2c-Get-Pattern.aspx pour pourquoi. –

+0

Vous n'êtes pas toujours "aller quelque part après la poste" si c'est une mise à jour AJAX. –

1

Chaque bouton de pagination a une valeur unique que vous devez soumettre avec le reste de vos valeurs de formulaire. Vous n'avez donc besoin que de quelque chose comme:

function GoToPage(pageNumber) 
{ 
    // submit form along with pageNumber 

    return false; 
} 

<a href="javascript:GoToPage(1);">1</a> 
<a href="javascript:GoToPage(2);">2</a> 
<a href="javascript:GoToPage(3);">3</a> 
Questions connexes