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

时间:2012-02-10 21:25:52

标签: javascript asp.net vb.net code-behind

我有一个负责填充SSRS报告的功能。用户按下按钮,我出去检查是否有数据。如果没有数据,我提供NO DATA消息。如果有数据,我打电话给SSRS报告,我想在新窗口中打开。我认为使用JavaScript函数将是实现此目的的最佳方法。这是怎么做的或你会推荐什么?提前谢谢!

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

4 个答案:

答案 0 :(得分:9)

试试这个:

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

答案 1 :(得分:5)

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

使用示例如下:

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

当然,你可以把你准备好的任何网址放在你的代码中......

希望它有所帮助。

答案 2 :(得分:3)

请注意以下事项:当您的vb代码正在运行时,浏览器中的页面不存在。

请记住,网络通过http协议工作,http协议归结为请求响应。始终是请求,然后是响应。通常,响应是html,这是你的vb代码进入的地方。所有代码和aspx标记的唯一目的是让你的web服务器可以将html发送回浏览器。浏览器和服务器之间没有活动连接。当您的vb代码正在运行时,浏览器中的网页实际上并不存在(您的代码正在忙于创建它)。当你的javascript正在运行时,用于在服务器上创建它的vb资源早已被回收。

答案 3 :(得分:0)

如果你试图在页面上执行javascript取决于服务器端逻辑的一些结果,你可以通过使用asp文字控件(或其他类型的asp控件)来实现这一点

示例:

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

    openWindow();
</asp:Literal>

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