次のvb.netロードイベントを含む次の簡単なテストasp.netフォームがあります。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim strScript As String
strScript = "function MyMsg()"
strScript += "{"
strScript += "alert(document.getElementById('TextBox3').value);"
strScript += "}"
ClientScript.RegisterStartupScript(Me.GetType(), "MyMsg", strScript, True)
End Sub
スクリプトが呼び出されたときに、Webページにテキストボックスのコンテキストを表示するだけです。
次に、このボタンコードがあります。
Protected Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
If ClientScript.IsStartupScriptRegistered("MyCall") Then
Me.TextBox3.Text = "My text - registered"
Else
Me.TextBox3.Text = "my text NOT registered"
End If
ClientScript.RegisterStartupScript(Me.GetType(), "MyCall", "MyMsg();", True)
End Sub
ただし、ボタンをクリックすると、常に未登録のテキストが表示されます。したがって、コードは正常に実行されているようです。テキストボックスからテキストを取得します。問題はありません。ただし、コードの真の部分は実行されません。
これは状態またはスコープの問題ですか?(またはコードが1回だけ注入されるという事実)これがコードブロックを真に実行することを妨げますか?
上記のコードの「真の」部分を実行するにはどうすればよいですか?