2 votes

Comment envoyer un paramètre dans la chaîne de requête lors d'un appel ajax dans asp.net mvc ?

Je veux envoyer la valeur de la page sélectionnée sur la querystring pendant la navigation dans la pagination.

L'URL qui est généré pour la pagination est comme ceci :

Link/Index?page=2
Link/Index?page=3

Mais sur mon URL, il n'y a que Link/Index et effectue l'appel Ajax. Mais si je désactive mon Javascript et que je navigue dans la pagination, il y a un Postback et une URL du genre

Link/Index?page=2

Ce qui est parfait. Mais je veux aussi ce type d'URL dans un appel Ajax.

Comment puis-je faire cela ? Le problème est que si nous naviguons à travers les pages lorsque le Javascript est activé, il montre le lien/Index et lorsque l'utilisateur va à la page 2 puis 3 puis 4 et appuie sur le bouton retour, il va à la page de presse au lieu de la page 3 puis la page 2.

Voici le code qui génère les liens de la page :

    <%= Ajax.Pager(
        new AjaxOptions { 
            UpdateTargetId = "divGrid", LoadingElementId = "divLoading" 
        }, 
        ViewData.Model.PageSize, 
        ViewData.Model.PageNumber, 
        ViewData.Model.TotalItemCount, 
        new { controller = "LinkManagement", action = "Index" }
    )%>

2voto

Matthew Abbott Points 32861

Ce n'est pas vraiment un problème avec le pager, mais c'est ainsi que fonctionne l'ajax. Comme vous n'avez pas créé de nouvelle demande de page complète, rien n'est stocké dans l'historique pour permettre au bouton retour de conserver les appels ajax. Vous devez utiliser quelque chose comme jquery.history (http://tkyk.github.com/jquery-history-plugin/) ou jquery address api (http://www.asual.com/jquery/address/samples/api/#/section/?id=2.2).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X