【问题标题】:Validators keep going even if bad input即使输入错误,验证器也会继续运行
【发布时间】:2011-10-31 18:18:46
【问题描述】:

我正在使用以下格式的正则表达式构建服务器端验证:

protected void valMessage_ServerValidate(object source, ServerValidateEventArgs args)
{
    regex = new Regex(@"^\d+$");

    if (regex.Match(args.Value).Success == true)
        args.IsValid = true;
    else
        args.IsValid = false;
}

这已连接到自定义验证器。问题是即使它失败了(即args.IsValid = false;),页面仍然正常运行。它不应该在找到带有IsValid = false 的控件后立即停止吗?为什么我的代码仍然在运行?

【问题讨论】:

  • 你知道有一个 RegularExpressionValidator 可以为你做这件事吗?

标签: asp.net validation


【解决方案1】:

如果没有看到“页面继续运行”是什么意思,很难说。假设您有一个事件处理程序响应单击“提交”按钮,您应该检查事件处理程序内的 Page.IsValid。

我经常犯的另一个错误是忘记在按钮和我的所有验证器上设置 ValidationGroup。

【讨论】:

  • 哦,我需要手动检查吗?我坚持 asp.net 检查页面是否自动有效。至少它与所有其他验证器一样。
  • 好吧,任何关于验证器的文章都建议检查 Page.IsValid 无论如何,可能是在 JavaScript 被禁用的情况下。
【解决方案2】:

1. 使用 Page.IsValid() 签入 Page_Load 事件。 2.您可以使用 Page.Validate() 触发验证。您的服务器端验证是否触发? 3.如果第2步的答案是否定的,请验证

  1. 自定义验证器的 OnServerValidate 属性已设置正确的服务器验证功能。
    1. 您已将当前验证组设置为自定义验证器。

【讨论】:

    【解决方案3】:

    不是真正的 ASP.Net 专家......你应该通过验证控制一次,几乎所有的验证都是在那里完成的......

    RequiredField Validator
    Compare Validator
    RegularExpression Validator
    Range Validator
    Custom Validator
    Validation Summary
    

    你可以得到一个简短的描述herehere。希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-02
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多