Сведения о вопросе

DUNKER

21:56, 24th August, 2020

Теги

asp.net   .net-1.1    

Проблема двойной обратной связи

Просмотров: 458   Ответов: 5

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

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

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

Первая обратная (порожденных autopostback элемента управления ТЭН ComboBox по )

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

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

alt text http://www.juanformoso.com.ar/images/callstack2.jpg

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



  Сведения об ответе

park

02:52, 18th August, 2020

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

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

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

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


  Сведения об ответе

park

03:12, 3rd August, 2020

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

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

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

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

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

Арун

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


  Сведения об ответе

SKY

08:49, 28th August, 2020

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


  Сведения об ответе

9090

08:02, 12th August, 2020

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

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

Dim i As Integer
i = 0

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

Удачи.


  Сведения об ответе

dumai

11:13, 8th August, 2020

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться