ASP.NET postback с jQuery?

У меня есть кнопка ASP.NET, но в последнее время я заменил ее на стандартную кнопку HTML... Мне нужно сделать обратную передачу на страницу ASP.NET и гарантировать, что будет вызван метод.

Предыдущая кнопка была кнопкой ASP.NET, поэтому у меня было это событие:

Protected Sub btnCancelar_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
    UtilTMP.DisposeObjects()
    Server.Transfer("~\Forms\test.aspx", True)
End 

Но я использовал кнопку с JavaScript ALERT, и недавно я изменился на диалог jQuery UI Modal, но не дождался, когда я отвечу на вопрос. postback происходит незамедлительно... поэтому я решил перейти на стандартная кнопка HTML... но мне нужно отправить обратно на страницу ASP.NET и вызвать метод вроде.

Если я просто вернусь, он не будет вызывать очистку

Protected Sub Cleanup()
    UtilTMP.DisposeObjects()
    Server.Transfer("~\Forms\test.aspx", True)
End 

Ответы

Ответ 1

Пока вы можете делать Postbacks с помощью JQuery, лучше назвать веб-метод (веб-сервис, который находится на вашей странице). Вызов также может быть быстрее, потому что вы не публикуете всю страницу ViewState.

Ответ 2

Посмотрите, поможет ли это: http://www.codeproject.com/KB/aspnet/sample.aspx.

В принципе, вы объявляете фиктивный якорный тег:

<a id="anchorId" runat="server" onclick="return true" onserverclick="foo"></a> 

В вашем коде позади вам нужно объявить метод foo:

protected void foo(object sender, EventArgs e)
{
    // Do something here
}

Затем вы можете вызвать эту функцию привязки anchor с помощью этого javascript:

document.getElementById('anchorId').click()

Ответ 3

Вам нужно установить скрытое поле __EVENTTARGET к соответствующему значению, если вы хотите вызвать обработчик события после обратной передачи. Однако я бы сделал это по-другому. Поместите кнопки ASP в свой модальный диалог, связанный с ними обработчиком событий. Попросите обработчик щелчка, который появляется в диалоговом окне, возвращает false (так что после этого нажатия кнопки не происходит обратная передача). Таким образом, ваша форма отправляется обратно с кнопки ASP, и обработчик, включая скрытый параметр на стороне клиента, запускается автоматически.

Ответ 4

Ознакомьтесь с этой статьей

http://www.deviantpoint.com/post/2009/03/12/Using-jQuery-UI-Dialogs-for-confirmation-windows.aspx

Основная идея заключается в том, что вы помещаете функцию обратного вызова в скрытое поле и запускаете eval на $(this).dialog('close');

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

Ответ 5

Вы должны иметь возможность остановить обратную передачу с помощью любого JS, прикрепленного к событию onclick, независимо от того, является ли это WebControl или стандартной HTML-кнопкой, возвращая false.

например. <input type="image" id="test" onclick="doWhatever();return false;" />

Ответ 6

Я столкнулся с этим сообщением через Google, поэтому я подозреваю, что другие тоже будут. Я пробовал здесь методы, которые не работали для меня. Я объясню свое решение, но сначала обзор того, что я пытаюсь сделать.

У меня есть форма, которая использует jQuery ajax для отправки данных на мой веб-сервис, который, в свою очередь, обновляет мою базу данных. У меня есть форма загрузки изображений, по соображениям безопасности вы не можете получить полный путь к файлу, который будет использоваться в вызове ajax, чтобы перейти к веб-сервису... так что это должно быть сделано с обычной обратной записью asp.net. Поэтому моя дилемма заключается в том, как сделать то и другое. То, что я сделал, это использовать мою функцию ajax для обновления базы данных, как только я вернусь к работе с веб-сервисом, я скажу форме, чтобы сделать обратную ссылку на определенный метод в коде, а затем перенаправить туда, где бы вы ни находились. $("#Button1").click(function () { javascript: __doPostBack('ctl00$ContentPlaceHolder1$atest', '') });

Это, по сути, точно так же, как назначение функции click для элемента управления asp.net, за исключением того, что вместо нажатия кнопки я говорю javascript для ее выполнения. atest будет идентификатором i, назначенным элементу управления asp.net.

Примечание: <%=myclientid.ClientID %> здесь не работает.