javascript msgbox if语句

时间:2012-02-09 14:29:07

标签: javascript vb.net

我在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

4 个答案:

答案 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!