【问题标题】:ASP.Net VB call JavaScript function from Code BehindASP.Net VB 从代码背后调用 JavaScript 函数
【发布时间】:2012-02-11 08:14:17
【问题描述】:

我有一个负责填充 SSRS 报告的函数。用户按下按钮,我出去查看是否有数据。如果没有数据,我提供 NO DATA 消息。如果有数据,我会调用我想在新窗口中打开的 SSRS 报告。我认为使用 JavaScript 函数将是完成此任务的最佳方式。这是如何完成的或者你会推荐什么?提前致谢!

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

【问题讨论】:

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


    【解决方案1】:

    试试这个:

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

    【讨论】:

      【解决方案2】:

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

      使用示例如下:

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

      当然你可以把你准备好的任何url放在你的代码后面...

      希望对你有帮助。

      【讨论】:

        【解决方案3】:

        这里要记住一点:当您的 vb 代码运行时,您的浏览器中的页面不存在。

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

        【讨论】:

          【解决方案4】:

          如果您尝试根据服务器端逻辑的某些结果在页面上执行 javascript,实现此目的的一种方法是使用 asp 文字控件(或其他类型的 asp 控件)

          例子:

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

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

          【讨论】:

            最近更新 更多