2010-05-20 7 views
2

Nous avons développé une page avec un asp.net et le débogage accidentellement, nous avons découvert sur notre bouton avec le code suivant sur onclik attributPourquoi ce bouton ne provoque pas triple postback?

onclick="__doPostBack('ctl00$FormPlace$m_userTaskMarkAsUnreadButton',''); __doPostBack('ctl00$FormPlace$m_userTaskMarkAsUnreadButton','');WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$FormPlace$m_userTaskMarkAsUnreadButton", "", true, "", "", false, false))" 

Il semble que le bouton faire trois postbacks mais quand on clique dessus cause uniquement sur la publication. Avec ce code semble que de bouton provoquera trois postbacks !!

Nous l'avons essayé avec Internet Explorer et Firefox et le bouton ne cause que des postbacks toujours. Les navigateurs qui évitent que le bouton fasse trois postback? Ou est-ce que le serveur Asp.net évite les trois publications? Nous ne comprenons pas pourquoi le bouton se comporte correctement si l'attribut onclick a trois appels à faire des publications.

Merci

Répondre

5

Si la première fonction JavaScript appelée la page provoque vos données à POST (ne pas utiliser un XMLHttpRequest), une nouvelle page est chargée et l'exécution de vos arrêts JavaScript.

3

Le premier __doPostback affichera immédiatement la page. Les deux instructions restantes ne seront jamais exécutées.

3

__doPostBack remplit deux champs cachés avec les paramètres donnés, puis envoie un message au serveur. Tout ce qui vient plus tard dans le javascript n'est pas pertinent car la page sera détruite et reconstruite.

1

Je sais que je réinvente la roue ici ... mais __doPostBack en fait .. ne postback donc lorsque le premier __doPostBack est exécuté la page que vous êtes sur est déjà parti. Et puis, ça sonne très douteux ... pourquoi ne pas appeler une méthode et le faire 3 fois dans le back-end?

De plus, cela dépend si vous utilisez UpdatePanels ou non.