web-dev-qa-db-ja.com

背後にあるvb.netコードからjavascriptを呼び出す

コードビハインドからJavaScript関数を呼び出すにはどうすればよいですか?
最も人気のある回答は「ScriptManager.RegisterStartupScript "しかし、それは私の状況では機能しません。

レコードが存在するかどうかを確認するためにデータベースチェックを実行しているvbクラスがあります。存在する場合は、javascript関数を呼び出してアラートを表示します( "レコードが存在します")

だから私は次のようなことをしています

Dim strMessage as string = "javascript:RecordExists('Param');"  

Vb.netクラスからこの関数を呼び出すにはどうすればよいですか?

9
Troy
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)をデータベースレコードが存在することを確認する条件に置き換える必要があります。

13
Deeptechtons

スクリプトについては少し異なる方法で考える必要があります。JavaScriptはクライアント側で実行され、VB.NETはサーバー側で実行されることを忘れないでください。したがって、サーバー側からJavaScriptを「呼び出す」ことはできません。

ただし、サーバー側でJavaScriptを生成することはできますが、に出力する必要があります。実行する前にページ。

ページ全体のポストバックを実行している場合、それを実現する大まかな方法​​は、スクリプトまたは関数をLiteralコントロールに割り当てることです。これにより、HTMLページのTextプロパティが記述どおりにレンダリングされます。 。

次に、スクリプトはLiteralがレンダリングされた時点で実行されます。

それを行うためのより良い方法は、あなたが述べたようにScriptManagerを介してページにスクリプトを追加することです。 StartupScriptではなく、代わりに.RegisterClientScriptBlock()を使用してみてください。あなたはそれがうまくいかないあなたの状況について何であるかについて言及しませんか?

これを行う最も包括的な方法は、AJAX --.NETの組み込みフレームワークまたはjQueryのいずれかを使用することです。jQueryのAJAX(およびAJAX一般的に)は別のトピックであり、 ここ について読むことができます。

11
Widor