Почему эта кнопка не вызывает тройной постбэк? - PullRequest
2 голосов
/ 20 мая 2010

Мы разработали страницу с asp.net и случайно отладили ее, мы обнаружили на нашей странице кнопку со следующим кодом атрибута onclik

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

Кажется, что кнопка выполняет три обратных передачи, но когда мы нажимаем на нее, вызывается только обратная передача. С этим кодом кажется, что кнопка de вызовет три постбэка !!

Мы должны попробовать это с Internet Explorer и Firefox, и кнопка всегда вызывает только обратную передачу. Есть браузеры, которые избегают, чтобы кнопка делала три постбэка? Или сервер Asp.net, который избегает трех обратных передач? Мы не понимаем, почему кнопка ведет себя правильно, если атрибут onclick имеет три вызова для выполнения обратных передач.

Спасибо

Ответы [ 4 ]

5 голосов
/ 20 мая 2010

Если первая вызванная функция JavaScript заставляет страницу размещать ваши данные (без использования XMLHttpRequest), загружается новая страница и выполнение вашего JavaScript останавливается.

3 голосов
/ 20 мая 2010

__ doPostBack заполняет два скрытых поля заданными параметрами и затем отправляет их на сервер. Все, что будет позже в javascript, не имеет значения, потому что страница будет уничтожена и восстановлена.

3 голосов
/ 20 мая 2010

Первый __doPostback немедленно опубликует страницу. Оставшиеся два оператора никогда не будут выполнены.

1 голос
/ 20 мая 2010

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

И, кстати, такое поведение звучит очень хитроумно ... почему бы не вызвать один метод и сделать это 3 раза в бэк-энде?

Также .. это зависит от того, используете ли вы UpdatePanels ..

...