ASP.Net - запускать событие кнопки на стороне сервера, не вызывая обратную передачу - PullRequest
1 голос
/ 20 октября 2011

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

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

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

И для вас творческие мыслитам я недавно наткнулся: http://ryanfarley.com/blog/archive/2005/03/11/1886.aspx

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

Спасибо за ваше время.

Ответы [ 5 ]

3 голосов
/ 20 октября 2011

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

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

1 голос
/ 20 октября 2011

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

0 голосов
/ 20 октября 2011

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

0 голосов
/ 20 октября 2011

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

0 голосов
/ 20 октября 2011

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

...