web-dev-qa-db-ja.com

ASP.Net VBコードビハインドからJavaScript関数を呼び出す

SSRSレポートの作成を担当する機能があります。ユーザーがボタンを押すと、私は外に出てデータがあるかどうかを確認します。データがない場合は、NODATAメッセージを表示します。データがある場合は、新しいウィンドウで開きたいSSRSレポートを呼び出します。これを実現するには、JavaScript関数を使用するのが最善の方法だと思いました。これはどのように行われますか、または何をお勧めしますか?前もって感謝します!

    <script type="text/javascript">
        function openWindow(url) {
            document.forms[0].target = "_blank";
        }
    </script>
6
Susan

これを試して:

 System.Web.UI.ScriptManager.RegisterClientScriptBlock(Page, GetType(Page), "Script", "openWindow(url);", True)
11
coder

ClientScriptManager.RegisterClientScriptBlockメソッドの使用を検討してください。これは静的メソッドであり、ページで使用できるはずです。

使用例は次のとおりです。

Page.ClientScript.RegisterStartupScript(Me.GetType(), "window-script", "openWindow('someUrl')", True)

もちろん、準備したURLをコードの後ろに置くことができます...

それが役に立てば幸い。

5
ŁukaszW.pl

ここで覚えておくべきことがあります。vbコードの実行中は、ブラウザのページは存在しません。

Webはhttpプロトコルを介して機能し、httpプロトコルはrequestsおよびresponsesに要約されることに注意してください。常に最初に要求し、次に応答します。多くの場合、応答はhtmlであり、これがvbコードの出番です。すべてのコードとaspxマークアップの唯一の目的は、Webサーバーがhtmlをブラウザーに送り返すことができるようにすることです。ブラウザとサーバーの間にアクティブな接続はありません。 vbコードの実行中は、ブラウザーのWebページは実際には存在しません(コードはコードの作成でビジーです)。 javascriptの実行中、サーバー上でjavascriptを作成するために使用されたvbリソースは、長い間リサイクルされてきました。

3
Joel Coehoorn

サーバー側ロジックの結果に応じてページでJavaScriptを実行しようとしている場合、これを実現する1つの方法は、aspリテラルコントロール(または他のタイプのaspコントロール)を使用することです。

例:

<asp:Literal ID="literalJavascript" runat="server">
    function openWindow() { ... }

    openWindow();
</asp:Literal>

次に、他のロジックに基づいて、サーバーコードでこのリテラルを表示または非表示にします。

0
shanabus