Question

J'ai une application ASP.NET 1.1 et j'essaie de savoir pourquoi lorsque je modifie une ComboBox dont la valeur est utilisée pour en remplir une autre (relation parent-enfant), deux publications sont produites.

J'ai vérifié et vérifié le code et je ne trouve pas la cause.

Voici les deux piles d'appels qui se terminent par un page_load

Première publication (générée par la publication automatique de ComboBox)

Pile d'appels de publication http://www.juanformoso.com.ar/images/callstack1.jpg

Deuxième publication (c'est ce que je veux savoir pourquoi cela se produit)

texte alternatif http://www.juanformoso.com.ar/images/callstack2.jpg

Toute suggestion?Que puis-je vérifier ?

Était-ce utile?

La solution

C'est un problème très spécifique avec ce code, je doute qu'il soit utile à quelqu'un d'autre, mais voilà :

Un chèque a été ajouté aux combos onchange avec un if, si la condition était remplie, un appel explicite à la fonction postback était effectué.Si le combo était réglé sur AutoPostback, asp.net a ajouté à nouveau l'appel de publication, produisant les deux publications...

Le code HTML généré ressemblait à ceci :

[select onchange="javascript: if (CustomFunction()){__doPostBack('name','')}; __doPostBack('name','')"]

Autres conseils

La première chose que je rechercherais est que la propriété AutoPostBack du deuxième ComboBox n'est pas définie sur true.Si vous modifiez la valeur dans la deuxième combinaison avec cette propriété définie sur true, je pense que cela générera une publication sur ce contrôle.

Avez-vous un code à partager ?Les doubles publications m'ont tellement tourmenté dans l'ASP classique à l'époque que c'est ce qui m'a finalement incité à passer à .NET une fois pour toutes.Chaque fois que j'ai des problèmes comme ceux-ci pour .NET, j'accède à chaque élément CONTROL et PAGE comme load, init, prerender, click, SelectedIndexChanged, etc. et je mets un point d'arrêt.

Même si je n'ai pas de code, j'insérerai quelque chose comme :

Dim i As Integer
i = 0

Je suis généralement capable d'identifier une action à laquelle je ne m'attendais pas et de la corriger si nécessaire.Je vous suggère de le faire ici.

Bonne chance.

Vérifiez Request.Form["__EVENTTARGET"] pour trouver le contrôle qui lance la publication - cela peut vous aider à le affiner.

En regardant les piles d'appels et certains Reflectoring (dans ASP.NET 2 - je n'ai pas 1.1 à portée de main) - il semble que SessionStateModule.PollLockedSessionCallback fasse partie des routines de démarrage de HttpApplication.Il est possible que votre application soit recyclée. Je suis presque sûr qu'un événement est écrit dans le journal des événements à cet effet.

Ma seule autre suggestion serait Fiddler ou quelque chose sur le client pour capturer le trafic HTTP.

Il s'agit d'un article très ancien, mais les gens recherchent toujours une solution exactement comme je l'ai fait la semaine dernière.

Comme Grengby l'a dit, les événements doubles sont les principales raisons - mais la suppression de l'un d'entre eux n'est pas toujours une option.Au moins dans mon cas et j'ai dû résoudre ce problème sur demande d'un tiers.

J'ai ajouté le script suivant et modifié le formulaire ASP sur la page maître :

<script>var Q = 0;</script>
<form id="Form1" runat="server" onsubmit="Q++; if(Q==1){return true;} else { return false;}">

Cela semble fonctionner et veuillez transmettre vos commentaires.

Arun

http://www.velocityreviews.com/forums/t117900-asp-net-multiple-postback-issue.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top