Двойная проблема обратной передачи - PullRequest
5 голосов
/ 21 августа 2008

У меня есть приложение ASP.NET 1.1, и я пытаюсь выяснить, почему, когда я изменяю ComboBox, значение которого используется для заполнения другого (отношения родитель-потомок), создаются два обратных запроса.

Я проверил и проверил код и не могу найти причину.

Вот оба стека вызовов, которые заканчиваются на page_load

Первый постбэк (генерируется автоответчиком ComboBox)

Стек обратных вызовов http://www.juanformoso.com.ar/images/callstack1.jpg

Второй постбэк (это то, что я хочу выяснить, почему это происходит)

альтернативный текст http://www.juanformoso.com.ar/images/callstack2.jpg

Есть предложения? Что я могу проверить?

Ответы [ 5 ]

4 голосов
/ 21 августа 2008

Это очень специфическая проблема с этим кодом, я сомневаюсь, что это будет полезно для кого-то еще, но здесь это идет:

Проверка была добавлена ​​в комбо onchange с помощью if, если условие было выполнено, был сделан явный вызов функции обратной передачи. Если для комбо было установлено значение AutoPostback, asp.net снова добавил обратный вызов, создав два обратных ответа ...

Сгенерированный HTML был такой:

[select onchange="javascript: if (CustomFunction()){__doPostBack('name','')}; __doPostBack('name','')"]
0 голосов
/ 10 мая 2010

Это очень старая статья, но люди все еще ищут решение, точно такое же, как и я на прошлой неделе.

Как сказал Гренгби, двойные события являются основными причинами, но удаление одного из них не всегда является возможным вариантом. По крайней мере, по моему делу, и я должен был решить это по заявке третьей стороны.

Я добавил следующий скрипт и исправил форму ASP на главной странице:

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

Кажется, это работает, и, пожалуйста, отправьте ваши комментарии.

Arun

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

0 голосов
/ 21 августа 2008

У вас есть какой-нибудь код, которым вы могли бы поделиться? Двойные посты так мучили меня в классическом ASP в те времена, что именно это окончательно побудило меня перейти на .NET раз и навсегда. Всякий раз, когда у меня возникают подобные проблемы с .NET, я перехожу к каждому элементу CONTROL и каждому элементу PAGE, таким как load, init, prerender, click, SelectedIndexChanged и т.

Даже если у меня там нет кода, я вставлю что-то вроде:

Dim i As Integer
i = 0

Я обычно могу определить некоторые действия, которые я не ожидал, и исправить их по мере необходимости. Я бы посоветовал вам сделать это здесь.

Удачи.

0 голосов
/ 21 августа 2008

Проверьте Request.Form ["__ EVENTTARGET"], чтобы найти элемент управления, инициирующий обратную передачу - это может помочь вам сузить его.

Глядя на стеки вызовов и некоторые Reflectoring (в ASP.NET 2 - у меня под рукой нет 1.1) - похоже, SessionStateModule.PollLockedSessionCallback является частью процедуры запуска HttpApplication. Вполне возможно, что ваше приложение перерабатывается - я уверен, что для этого в журнал событий будет записано событие.

Мое единственное другое предложение будет Fiddler или что-то на клиенте для захвата HTTP-трафика.

0 голосов
/ 21 августа 2008

Первое, что я хотел бы найти, это то, что у второго свойства ComPoBox AutoPostBack установлено значение true. Если вы измените значение во втором комбо с этим свойством, установленным в true, я думаю, что это сгенерирует обратную передачу для этого элемента управления.

...