CustomValidator触发但不能阻止ASP.NET中的回发

时间:2017-05-10 04:07:53

标签: c# asp.net customvalidator

我在ASP.NET中使用CustomValidator如下。

<asp:CustomValidator ID="AnswerCV" runat="server" ForeColor="Red" 
     ValidateEmptyText="True" ValidationGroup="test" 
     OnServerValidate="CustomValidation" ControlToValidate="TextBox1" Enabled="True" 
     ErrorMessage="You must fill in the text box.">
</asp:CustomValidator>

<asp:TextBox ID="TextBox1" ValidationGroup="test" runat="server">
</asp:TextBox>

<asp:Button runat="server" Id="Button" CausesValidation="True" ValidationGroup="test" 
     OnClick="Button_Click" />

我背后的代码

protected void CustomValidation(object sender, ServerValidateEventArgs e)
{
        MessageBox.Show("It is firing!!!");
        if (string.IsNullOrEmpty(TextBox1.Text))
        {
            e.IsValid = false;
        }
        else
        {
            e.IsValid = true;
        }           
}

按钮点击方法如下

protected void Button_Click(object sender, EventArgs e)
{
        MessageBox.Show("I should not have fired.");
}

CustomValidation方法会触发,但Button_Click方法会在此之后触发,然后是“您必须填写文本框”。显示错误消息。如何阻止Button_Click方法触发,当文本框为空时验证失败并触发错误消息,但Button_click方法被触发后?

stackoverflow页面here提供了我已实现的其他解决方案,但仍然会触发Button_Click方法。

旁白:我无法使用客户端解决方案,因为我动态地在Init()方法中添加代码,通过{启用和禁用CustomValidator仅在某些单选按钮中的{1}}事件。 停止结束

我还尝试了不使用CheckedChanged方法的CustomValidator,我尝试从OnServerValidate方法返回false的布尔值导致语法错误。

2 个答案:

答案 0 :(得分:0)

请在Button_Click事件中添加一个if条件

protected void Button_Click(object sender,EventArgs e)     {         if(IsValid)         {             Response.Write(&#34; alert(&#39;我不应该被解雇&#39;);&#34;);         }     }

答案 1 :(得分:0)

protected void Button_Click(object sender, EventArgs e) 
{ 
    if (IsValid) 
    { 
      Response.Write(" alert ('I should not have fired'); "); 
    } 
}