-
Ajax et ASP.NET
Bonjour,
J'ai suivi plusieurs tutoriels pour mettre un peu d'AJAX dans mon ASP.NET/C#, dont le tutoriel vidéo suivant (en anglais) :
http://download.microsoft.com/downlo...ASPNETPage.wmv
J'ai essayé de faire de même, puis j'ai corcé un peu les choses en demandant une mise à jour partielle de ma page sur changement de la sélection d'un DropDownList.
Je suis alors arrivé à la même conclusion que tel que décrit dans cet article http://blog.developpez.com/nico-pyri...datepanel_pour
... à savoir qu'il faut préciser AutoPostBack="true" pour les DropDownList pour qu'ils puissent être utilisés en ajax.
Je pensais jusque là que l'atout de l'ajax était d'éviter de faire un rechargement de toute la page. Je pensais donc bêtement que la partie Page_Load n'était pas reparcourue.
L'exemple vidéo utilise la partie du Page_Load pour justement remettre à jour un label contenant l'heure. Ce label n'étant pas remis à jour à chaque rechargement partiel de la page permis par ajax, cela m'a conforté dans mon idée que les instructions du Page_Load n'étaient pas réexécutées.
Or, en mettant un point d'arrêt sur la première ligne de code du Page_Load, je m'aperçois qu'on y passe pour chaque rechargement partiel de la page, c'est à dire à chaque fois que je change la sélection dans mon DropDownList.
C'est à priori cohérent avec la propriété AutoPostBack="true" de mon DropDownList, mais incohérent avec ma première idée de l'atout de l'ajax.
J'ai fait le test également avec une mise à jour partielle de la page suite à un clic sur un bouton : même chose, Page_Load reparcouru.
Comment se fait-il que le Page_Load soit reparcouru, alors que le résultat des instructions qu'il contient ne sera pas utilisé ??
... espérant avoir été assez clair ...
Merci d'avance pour vos réponses !
-
Lors d'un Asynchronous Partial PostBack, la page repasse par tout le cycle classique. Mais seule la "partie" html correspondant à l'UpdatePanel est transmise au client et mise à jour dans le navigateur. ;)
-
... existe-t-il un moyen d'éviter au maximum de repasser par ce chargement ?
Jouer sur le IsPostBack ? qq chose d'autre ?
-
Y a le IsPartialPostBack ou un truc dans le genre
-
Merci lutecefalco pour tes réponses. Par contre, une recherche sur le IsPartialPostBack donne bien peu de résultats, je n'ai rien trouvé dans la msdn non plus.
J'ai trouvé cette page, qui a répondu à ma question, à savoir ajouter un if dans le Page_Load qui m'évite de repasser les instructions en cas de AsyncPostBack.
Je vous laisse découvrir par vous même la réponse : http://forums.asp.net/t/1124166.aspx
-
IsInAsyncPostBack, j'étais pas loin quand même :D