2012-03-07 80 views

回答

1

编辑下面的解决方案不工作。

当e.IsValid == true时,消息不可见。我想也许你可以通过将其设置为在ClientValidationFunction中可见来解决这个问题,但是这不起作用,因为asp.net包含的JavaScript验证代码执行ClientValidationFunction,然后调用一个名为ValidatorUpdateDisplay的方法,该方法设置基于可见性在IsValid上。

所以...不,我不认为你可以使用Asp.Net验证器来显示有效和无效数据的消息,同时在提交表单时仍然保留正确的验证功能。

你也许可以使用两个带有逆模式的正则表达式验证器,然后使用一些代码来告诉提交的表单不会失败验证良好的输入,但是你最好写一个自定义的解决方案,而不是绑定到验证的形式。

原来的答案以供参考

你可以尝试创建一个可更改取决于输入验证ErrorMessage属性自定义验证。

是这样的:

标记:

<asp:CustomValidator ID="MyCustomValidator" runat="server" OnServerValidate="OnCustomValidate" ControlToValidate="MyControlToValidate"></asp:CustomValidator> 

代码隐藏:

protected void OnCustomValidate(object source, ServerValidateEventArgs e) 
{ 
    var validator = (source as CustomValidator); 
    var validRegex = new Regex("[a-z]"); 
    if (validRegex.IsMatch(e.Value)) 
    { 
     e.IsValid = true; 
     validator.ErrorMessage = "Good input"; 
     return; 
    } 
    validator.ErrorMessage = "Your input is not valid"; 
    e.IsValid = false; 
}