从后面的 vb.net 代码调用 javascript

Posted

技术标签:

【中文标题】从后面的 vb.net 代码调用 javascript【英文标题】:Call javascript from vb.net code behind 【发布时间】:2011-12-02 04:39:22 【问题描述】:

如何从后面的代码调用 javascript 函数? 最受欢迎的回复是“ScriptManager.RegisterStartupScript”但是,这在我的情况下不起作用。

我有一个 vb 类正在执行数据库检查以查看是否存在记录。如果存在,则调用javascript函数显示警报(“记录存在”)

所以我正在做类似的事情

Dim strMessage as string = "javascript:RecordExists('Param');"  

如何从我的 vb.net 类中调用此函数?

【问题讨论】:

Passing arguments to JavaScript function from code-behind 的可能重复项 【参考方案1】:
If DataStore.Record.Exists(theRecord) Then

    Dim script As String = "alert('Record exists')"
    If Not Page.ClientScript.IsStartUpScriptRegistered(Me.GetType(), "alertscript") Then
        Page.ClientScript.RegisterStartUpScript(Me.GetType(), "alertscript", script, True)

    End If
End If

你可以像上面那样做,你应该用检查数据库记录是否存在的条件替换DataStore.Record.Exists(theRecord)

【讨论】:

当我尝试使用您的解决方案时,在“If Not Page.ClientScript .....”处收到错误“对象引用未设置为对象的实例” 错误信息:“页面”不是“System.Web.HttpContext”的成员。 上一篇的错误: If DataStore.Record.Exists(theRecord) Then Dim script As String = "alert('Record exists');" If Not Page.ClientScript.IsStartUpScriptRegistered(Me.GetType(), "alertscript") Then Page.ClientScript.RegisterStartUpScript(Me.GetType(), "alertscript", script, True) End If 结束如果 有没有办法调用已经在前端编写的javascript函数,我的意思是在aspx文件中。我只想从后面的代码中调用该函数。【参考方案2】:

您需要以稍微不同的方式来考虑您的脚本 - 请记住,JavaScript 运行在客户端,而 VB.NET 运行在服务器端。所以你不能从服务器端“调用”JavaScript。

但是,您可以在服务器端生成 JavaScript,但需要先将其输出到页面才能运行。

如果您要进行整页回发,实现它的一种粗略方法是将脚本或函数分配给 Literal 控件,该控件在 html 页面上呈现其 Text 属性,与所写的完全相同。

然后,您的脚本将在 Literal 被渲染时执行。

如您所述,一种更简洁的方法是通过ScriptManager 将您的脚本添加到页面中。您可以尝试使用.RegisterClientScriptBlock() 而不是StartupScript?你没有提到你的情况是什么不起作用?

最全面的方法是使用 AJAX - .NET 的内置框架或 jQuery。 jQuery 的 AJAX(以及一般的 AJAX)是一个单独的主题,您可以阅读有关 here 的信息。

【讨论】:

禁止使用 JQuery... :-( 没关系 - 这只是一个不错的选择。首先再看看如何使用 ScriptManager,如果 真的 不适合您,请浏览网络以获取 .NET AJAX 示例。

以上是关于从后面的 vb.net 代码调用 javascript的主要内容,如果未能解决你的问题,请参考以下文章

WPF 从 vb.net 代码开始动画给出错误

如何从 vb.net 中的 aspx.vb 页面调用 webmethod

从 vb.net 中的模式窗口调用 javascript 函数

从 VB.NET 调用访问宏问题

从 Java 调用 VB.NET 函数的最佳方法是啥?

如何实例化一个 vba 类并从 vb.net 调用一个方法?