我在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
的布尔值导致语法错误。
答案 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'); ");
}
}