ASP.Net VB如何从Code Behind调用JavaScript函数

6

我有一个函数负责填充SSRS报表。用户按下按钮后,我会检查是否有数据。如果没有数据,我会提供“无数据”消息。如果有数据,我会调用SSRS报表,并希望在新窗口中打开。我认为使用JavaScript函数是实现这一目标的最佳方式。如何做到这一点或者您有什么建议?谢谢!

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

12

试一下这个:

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

5

请考虑使用ClientScriptManager.RegisterClientScriptBlock方法。它是一个静态方法,应该在你的页面上可用。

以下是使用示例:

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

当然,您可以在代码后端放置任何已准备好的URL...
希望这有帮助。

4

需要注意的是:当您的vb代码正在运行时,您在浏览器中看到的网页并不存在。

请记住,Web通过http协议工作,而http协议归结为“请求”和“响应”。始终先发出请求,然后是响应。通常,响应是html,这就是您的vb代码发挥作用的地方。所有代码和aspx标记的唯一目的是使您的Web服务器可以将html发送回浏览器。浏览器和服务器之间没有活动连接。在您的vb代码运行时,在您的浏览器中看到的Web页面实际上并不存在(您的代码正在创建它)。在您的JavaScript运行时,用于在服务器上创建页面的vb资源早已被回收。


1
如果您想根据服务器端逻辑的某些结果在页面上执行JavaScript,一种方法是使用ASP文字控件(或其他类型的ASP控件)。
例如:
<asp:Literal ID="literalJavascript" runat="server">
    function openWindow() { ... }

    openWindow();
</asp:Literal>

然后根据您的其他逻辑,在服务器代码中显示或隐藏此文字。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接