0

私はこの機能を持っています:

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」で「非シュレッド メンバーへの参照にはオブジェクト参照が必要です」というエラーが表示されます。

どうすればこれを解決できますか:)

ありがとうございました !

4

1 に答える 1

2

いつでも次のように変更できます。

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")
于 2013-08-22T13:54:41.653 に答える