Двойной постбэк

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

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

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

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

Стек обратных вызовов (не работает)

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

альтернативный текст (не работает)

Любое предложение? Что я могу проверить?

21.08.2008 15:55:12
было бы здорово, если вы повторно загрузите свои изображения :)
Neysor 1.04.2012 08:53:51
5 ОТВЕТОВ

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

0
21.08.2008 15:59:46

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

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

Dim i As Integer
i = 0

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

Удачи.

0
21.08.2008 16:42:38

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

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

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

0
21.08.2008 17:28:00
РЕШЕНИЕ

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

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

Сгенерированный HTML был похож на это:

[select onchange="javascript: if (CustomFunction()){__doPostBack('name','')}; __doPostBack('name','')"]
5
10.12.2011 01:54:03

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

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

Я добавил следующий скрипт и исправил форму 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
10.05.2010 09:28:12