Vb.net类中的JavaScript警报

JavaScript Alert in a Vb.net Class

本文关键字:JavaScript 警报 net Vb      更新时间:2023-09-26

我有这个函数:

Public Sub javaMsg(ByVal message As String)
    Dim sb As New System.Text.StringBuilder()
    sb.Append("<script type = 'text/javascript'>")
    sb.Append("window.onload=function(){")
    sb.Append("alert('")
    sb.Append(message)
    sb.Append("')};")
    sb.Append("</script>")
    Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "alert", sb.ToString())
End Sub

我需要把它放在vb类中,这样我就可以在所有页面中使用它,但我在"Page.ClientScript"上遇到了一个错误,说"引用非碎片成员需要对象引用"

我该如何解决这个问题:)

谢谢!

您可以随时将其更改为;

Public Function javaMsg(ByVal message As String) As String
    Dim sb As New System.Text.StringBuilder()   
    sb.Append("window.onload=function(){")
    sb.Append("alert('")
    sb.Append(message)
    sb.Append("')};")
    return sb.ToString()
End Sub

然后在你的页面上调用;

Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "alert", javaMsg("Hello World"), true)

请注意,有一个重载的RegisterClientScriptBlock,它实际上为您呈现脚本块

这样,你的函数就可以在任何你想要的类中,并且不会崩溃。

或者,您可以将当前页面作为对方法的引用进行传递;

Public Sub javaMsg(ByRef page As System.Web.UI.Page, ByVal message As String)
    Dim sb As New System.Text.StringBuilder()   
    sb.Append("window.onload=function(){")
    sb.Append("alert('")
    sb.Append(message)
    sb.Append("')};")
    page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", sb.ToString(), true)
End Sub

在你的页面上调用;

'' C# does not allow you to pass the page as a Reference type. Not sure if VB.Net does or not
'' So creating a reference to it before passing it in
Dim refPage As System.Web.UI.Page = me.Page
ClassName.javaMsg(refPage, "Hello World")