2

如果发现先前的验证器无效 - 在控制级别,是否有方法阻止验证器被评估?

例如,如果我创建一个带有 a RequiredFieldValidator、 aRegularExpressionValidator和自定义验证器的文本框,我不希望自定义验证器在RequiredFieldValidatorRegularExpressionValidator已经确定输入无效时被评估。

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

4

1 回答 1

3

如果文本框为空,RegularExpressionValidatorRequiredFieldValidator都返回 true。换句话说:默认情况下,它们不会验证您的空文本框是否清空,因此您正在做正确的事情,并且它应该可以按预期开箱即用。

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

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

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

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

    // ...
}

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

于 2009-12-09T16:14:43.643 回答