我有这个功能:
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,它实际上为您呈现脚本 block 。
这样你的函数就可以在你想要的任何类中并且不会中断。
或者,您可以将当前页面作为对您的方法的引用传递;
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")
关于Vb.net 类中的 JavaScript 警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18382381/