コードビハインドからJavaScript関数を呼び出すにはどうすればよいですか?
最も人気のある回答は「ScriptManager.RegisterStartupScript
"しかし、それは私の状況では機能しません。
レコードが存在するかどうかを確認するためにデータベースチェックを実行しているvbクラスがあります。存在する場合は、javascript関数を呼び出してアラートを表示します( "レコードが存在します")
だから私は次のようなことをしています
Dim strMessage as string = "javascript:RecordExists('Param');"
Vb.netクラスからこの関数を呼び出すにはどうすればよいですか?
If DataStore.Record.Exists(theRecord) Then
Dim script As String = "alert('Record exists')"
If Not Page.ClientScript.IsStartUpScriptRegistered(Me.GetType(), "alertscript") Then
Page.ClientScript.RegisterStartUpScript(Me.GetType(), "alertscript", script, True)
End If
End If
上記のように、DataStore.Record.Exists(theRecord)をデータベースレコードが存在することを確認する条件に置き換える必要があります。
スクリプトについては少し異なる方法で考える必要があります。JavaScriptはクライアント側で実行され、VB.NETはサーバー側で実行されることを忘れないでください。したがって、サーバー側からJavaScriptを「呼び出す」ことはできません。
ただし、サーバー側でJavaScriptを生成することはできますが、に出力する必要があります。実行する前にページ。
ページ全体のポストバックを実行している場合、それを実現する大まかな方法は、スクリプトまたは関数をLiteral
コントロールに割り当てることです。これにより、HTMLページのText
プロパティが記述どおりにレンダリングされます。 。
次に、スクリプトはLiteral
がレンダリングされた時点で実行されます。
それを行うためのより良い方法は、あなたが述べたようにScriptManager
を介してページにスクリプトを追加することです。 StartupScript
ではなく、代わりに.RegisterClientScriptBlock()
を使用してみてください。あなたはそれがうまくいかないあなたの状況について何であるかについて言及しませんか?
これを行う最も包括的な方法は、AJAX --.NETの組み込みフレームワークまたはjQueryのいずれかを使用することです。jQueryのAJAX(およびAJAX一般的に)は別のトピックであり、 ここ について読むことができます。