我在if语句中有两个JavaScript消息框,它们没有触发 - 编译器只是绕过代码,好像它不存在一样。当它在if语句之外时,这个完全相同的代码在别处工作。任何人都可以解释为什么这不起作用?感谢
If chk1.Checked And chk4.Checked Then
Dim message As String = "Invalid"
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>")
ClientScript.RegisterClientScriptBlock(Me.GetType(), "alert", sb.ToString())
Else
If chk2.Checked = True And chk5.Checked = True Then
Dim message2 As String = "Invalid"
Dim sb2 As New System.Text.StringBuilder()
sb2.Append("<script type = 'text/javascript'>")
sb2.Append("window.onload=function(){")
sb2.Append("alert('")
sb2.Append(message2)
sb2.Append("')};")
sb2.Append("</script>")
ClientScript.RegisterClientScriptBlock(Me.GetType(), "alert", sb2.ToString())
Else
答案 0 :(得分:0)
尝试更换:
sb2.Append("</script>")
使用:
sb2.Append("<\/script>")
在这两种情况下。
浏览器不允许直接注入,你需要欺骗它。
我想知道为什么要将Javascript和VBScript混合在一起或者它将如何运行。
答案 1 :(得分:0)
确保您的onload事件未设置复选框。 The ASP.net lifecycle指定onload事件将首先触发,因此将复选框设置为onload部分中定义的内容。如果您需要避免这种情况,只需将设置复选框的代码包装在一个
if not isPostback then
声明以避免这种情况发生
答案 2 :(得分:0)
ASPX:
<asp:Button ID="Button1" runat="server" Text="Button" />
<br />
<asp:CheckBox ID="CheckBox1" Text="CheckBox1" runat="server" />
<asp:CheckBox ID="CheckBox2" Text="CheckBox2" runat="server" />
VB:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim message As String = "not (chk1 and chk2)"
If CheckBox1.Checked And CheckBox2.Checked Then
message = "chk1 and chk2"
Else
If CheckBox1.Checked Then
message = "chk1"
ElseIf CheckBox2.Checked Then
message = "chk2"
End If
End If
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>")
ClientScript.RegisterClientScriptBlock(Me.GetType(), "alert", sb.ToString())
End Sub
我测试了这段代码......
答案 3 :(得分:-2)
尝试==而不是= in if condition!