web-dev-qa-db-ja.com

jQueryによるASP.NETポストバック?

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アラート付きのボタンを使用していて、最近jQuery UIモーダルダイアログに変更しましたが、質問に答えるのを待ちませんでした。ボタン...しかし、ASP.NETページにポストバックして、次のようなメソッドを呼び出す必要があります。

ポストバックだけではクリーンアップは呼び出されません

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

JQueryを使用してポストバックを実行できますが、Webメソッド(ページ内のWebサービス)を呼び出す方がよい場合があります。ページ全体のViewStateをポストしないため、呼び出しも高速になる可能性があります。

6
Chris Brandsma

これが役立つかどうかを確認してください: 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
}

次に、このjavascriptでこのアンカーのonclick関数を呼び出すことができます。

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

この記事をチェックしてください

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

基本的な考え方は、コールバック関数を非表示フィールドに配置し、$(this).dialog('close');でevalを実行することです

これをグリッドビューで機能させるために使用したので、方法を知りたい場合はコメントを残してください。

4
David Basarab

ポストバック時にイベントハンドラーをトリガーする場合は、__ EVENTTARGET非表示フィールドを適切な値に設定する必要があります。しかし、私はそれを別の方法で行います。イベントハンドラーが関連付けられているモーダルダイアログにASPボタンを配置します。ダイアログボックスをポップアップするクリックハンドラーがfalseを返すようにします(そのボタンのクリックからポストバックが発生しないようにします)。 。このようにして、フォームはASP=ボタンからポストバックされ、クライアント側の非表示フィールド設定を含むハンドラーが自動的に呼び出されます。

4
tvanfosson

私はグーグルを通してこの投稿に出くわしたので、他の人もそうするのではないかと思う。ここではうまくいかない方法を試しました。私の解決策を説明しますが、最初に私がやろうとしていることの概要を説明します。

jQuery ajaxを使用してWebサービスにデータを投稿するフォームがあり、それによってデータベースが更新されます。私は画像アップロードフォームを持っています。セキュリティ上の理由から、Webサービスに渡すajax呼び出しで使用する完全なファイルパスを取得できないため、通常のasp.netポストバックで実行する必要があります。したがって、私のジレンマは、両方を行う方法です。私がやったことは、私のajax関数を使用してデータベースを更新することでした。Webサービスから正常に戻ったら、フォームにコードビハインドの特定のメソッドへのポストバックを実行し、どこにでもリダイレクトするように指示しました。 $("#Button1").click(function () { javascript: __doPostBack('ctl00$ContentPlaceHolder1$atest', '') });

これは、ボタンをクリックする代わりにjavascriptに実行を指示することを除いて、本質的にはasp.netコントロールにクリック関数を割り当てることと同じです。 atestは、asp.netコントロールに割り当てられたIDです。
注:<%=myclientid.ClientID %>はここでは機能しません。

0
The Muffin Man

Falseを返すことにより、WebControlか標準のHTMLボタンかに関係なく、ボタンのonclickイベントに接続されているJSを使用してポストバックを停止できるはずです。

例えば。 <input type="image" id="test" onclick="doWhatever();return false;" />

0
Andrew Corkery