如果文本框为空,RegularExpressionValidator和RequiredFieldValidator都返回 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 作为参数。