【问题标题】: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 协议归结为 requests 和 responses。总是先请求,然后是响应。通常,响应是 html,这就是您的 vb 代码的来源。所有代码和 aspx 标记的唯一目的是让您的 Web 服务器可以将 html 发送回浏览器。浏览器和您的服务器之间没有活动连接。当您的 vb 代码正在运行时,您的浏览器中的网页实际上并不存在(您的代码正忙于创建它)。当您的 javascript 正在运行时,用于在服务器上创建它的 vb 资源早已被回收。
【解决方案4】:
如果您尝试根据服务器端逻辑的某些结果在页面上执行 javascript,实现此目的的一种方法是使用 asp 文字控件(或其他类型的 asp 控件)
例子:
<asp:Literal ID="literalJavascript" runat="server">
function openWindow() { ... }
openWindow();
</asp:Literal>
然后根据您的其他逻辑在您的服务器代码中显示或隐藏此文字。