ASP.NET验证程序 - 在第一次失败时停止验证

时间:2009-12-09 14:21:34

标签: asp.net validation customvalidator requiredfieldvalidator

是否有一种方法可以在控制级别找到先前的验证器无效时停止验证验证器?

例如,如果我创建一个包含RequiredFieldValidatorRegularExpressionValidator和自定义验证程序的文本框,我不希望评估自定义验证程序RequiredFieldValidator或{ {1}}已确定输入无效。

具体来说,在这种情况下,自定义验证器没有客户端支持,但是如果没有输入数据(使用RegularExpressionValidator)而不是进行回发,我想阻止回发。 / p>

1 个答案:

答案 0 :(得分:3)

如果文本框为空,则RegularExpressionValidatorRequiredFieldValidator都返回true。换句话说:默认情况下,它们不会验证清空您的空文本框,因此您正在执行正确的操作,它应该可以正常工作。

RequiredFieldValidator和RegularExpressionValidator默认情况下也会验证客户端 - 使用JavaScript - 因此如果其中任何一个失败,都不会发生回发。

请记住在客户端和服务器端测试正则表达式字符串,因为JavaScript和.NET正则表达不是100%兼容。

最好在所有控件上定义ValidationGroup,包括应触发验证的按钮。这应该启用服务器端验证,但我不是100%肯定,所以如果你的CustomValidator不是triggeren,请添加以下代码作为myButton_Click方法的第一行:

myButton_Click(object Sender, EventArgs e)
{
    Page.Validate("MyValidationGroup");
    if (!Page.IsValid)
    {
        return;
    }

    // ...
}

Page.Validate()接受validationGroup作为参数。