ASP.Net - запускает событие кнопки на стороне сервера, не вызывая обратной передачи

У меня есть вопрос, который, как я видел, задавали и другие люди в прошлом, но я не мог найти решения.

Я хочу использовать кнопку ссылки ASP.Net (или даже кнопку) на странице, при нажатии на которую срабатывает код события на стороне сервера, НО я не хочу, чтобы это приводило к обратной передаче.

Теперь я знаю, что эти элементы управления предназначаются для вызова обратной передачи по дизайну и что вы можете отключить это, добавив: "return false;" параметру Onclientclick (или, альтернативно, Attributes.Add ("onclick", return false ");), но обратите внимание, что это НЕ то, о чем я спрашиваю. Я думаю, что мой вопрос по существу таков: как мы можем вызвать метод на сервере? на стороне клиента, не вызывая обратной передачи? Возможно ли это вообще? (Я чувствую некоторые логические проблемы в самом вопросе, но у нескольких других людей была такая же проблема).

А для вас, творческих людей, я недавно наткнулся на: http://ryanfarley.com/blog/archive/2005/03/11/1886.aspx

в котором объясняется, как определить элемент управления, вызывающий обратную передачу. может быть, это поможет каким-то образом отключить эффекты обратной передачи, но при этом запустить событие? если да, то как можно избежать эффектов обновления страницы (у меня ничего нет в Page_Load, но страница все еще «обновляется» или повторно отображается. Я не хочу этого, можно ли этого избежать? Я не выход еще разобрался.

Спасибо за уделенное время.


person shadowf    schedule 20.10.2011    source источник


Ответы (5)


Чтобы вызвать событие на стороне сервера, вы ДОЛЖНЫ отправить данные на сервер, чтобы он знал, что делать. Остановка обратной передачи останавливает отправку данных, поэтому сервер никогда не узнает о том, что произошло на клиенте.

Если вы просто хотите избежать повторных обращений к страницам, лучше всего использовать AJAX. В веб-формах ASP.NET самый простой способ - обернуть материал в UpdatePanel. Другой способ - изучить использование PageMethods со сценарием на стороне клиента (по сути вызывающим веб-сервис из клиентского скрипта, который затем действует как прокси для сервера).

person Dan Diplo    schedule 20.10.2011

Почему бы просто не закодировать javascript, запускаемый кнопкой, которая вносит необходимые изменения на стороне клиента. Если вам нужны какие-либо динамические данные с сервера во время события, вы можете получить их с помощью ajax с сервера.

person Jonas B    schedule 20.10.2011

Насколько я знаю, это невозможно.

person clearpath    schedule 20.10.2011

Вместо этого вы можете запустить частичное воспроизведение (чтобы страница не перезагружалась), поместив кнопку в UpdatePanel.

person James    schedule 20.10.2011

здесь вы можете сделать две вещи. - либо использовать панель обновлений, либо добавить в PageLoad проверку для IsPostBack. - Еще вы можете сделать вызов ajax с помощью jquery и указать метод, который будет выполняться при нажатии этой кнопки, следующая ссылка должна помочь вам в этом. http://www.seoasp.net/post/2008/07/16/jQuery-To-Call-ASPNET-Page-Methods-and-Web-Services.aspx

person Junaid    schedule 20.10.2011