vendredi 3 avril 2009

Ajax History - Server Side

Vous utilisez des update panels pour améliorer les temps de réponses de votre site, mais vous vous rendez compte que les fonctions « page suivante » et « page précédente » de votre navigateur ne prennent pas en compte l’historique de votre navigation ?


Ajax permet pourtant de gérer cet historique de navigation. Néanmoins il vous faut gérer cet historique « à la main ». C'est-à-dire qu’à chaque évenement modifiant l’état de votre page, vous devez sauvegarder les valeurs des variables vous permettant de restituer le même état de navigation, ultérieurement.


Pour cela plusieurs étapes :

  1. Activer l’historique de navigation dans votre contrôle ScriptManager et s’abonner à l’évènement « OnNavigate »:ID="ScriptManager1" EnableHistory="true" OnNavigate="ScriptManager1_Navigate" runat="server" />
    Sauvegarder vos valeurs grâce à la méthode « AddHistoryPoint » du contrôle « ScriptManager ».
    Ex : if (!ScriptManager1.IsNavigating && IsPostBack)
    {
    ScriptManager1.AddHistoryPoint(“Var1”, MaVariable.ToString());
    }
  2. Cette méthode prend des couples Key/Value. Ces ensembles Key/Value sont stockés dans l’URL. Ces valeurs peuvent être sécurisées grâce à l’attribut « EnableSecureHistoryState » du contrôle « ScriptManager ». Si ca valeur est à « True », les paires Key/Value seront chiffrées, sinon elles seront affichées en clair dans l’URL.
  3. Déclarer et implémenter la méthode « void ScriptManager1_Navigate(object sender, HistoryEventArgs e) » :
    void ScriptManager1_Navigate(object sender, HistoryEventArgs e)
    {
    MaVariable = e.State[“Var1”] ;
    }
    Cette méthode permet de recharger l’état de votre page. Cette méthode est déclenchée automatiquement lorsque le ScriptManager détecte des éléments dans l’url.

Ce mécanisme de gestion de la navigation côté serveur est également possible côté client.


Aucun commentaire:

Enregistrer un commentaire