【问题标题】:Creating custom ASP.NET validator创建自定义 ASP.NET 验证器
【发布时间】:2009-11-20 18:09:02
【问题描述】:

我创建了一个自定义控件和一个自定义验证器(扩展 BaseValidator)。在自定义控件上,我设置了 ValidationProperty("Values")。问题是发送回发时验证不起作用,除非我执行 Page.Validate()。当我调用 Page.Validate() 时,所有验证器都被执行,这不是我在回发时所期望的。

如何创建将在控件值更改时执行的自定义验证器并仅验证该控件?

【问题讨论】:

    标签: asp.net asp.net-3.5


    【解决方案1】:

    验证器不是这样工作的。除非您使用 ValidationGroup 设置,否则您页面上的所有验证器都会自动触发。您不必显式调用 Page.Validate()。但是,您确实需要将代码包装在这样的检查中:

    if(Page.IsValid)
    {
        //do something here
    }
    

    与客户端验证器不同,服务器端验证不会阻止页面正常回发和处理事件。

    要创建一个仅在控件值更改时进行验证的控件,这需要一些技巧,因为更改事件会在验证器执行后触发。

    【讨论】:

    • 是的,这真的很可悲。我刚刚发现,如果我使用两个验证器创建两个字段,并且其中一个字段的 AutoPostBack 属性设置为 true,那么当客户端验证第一个字段并显示错误消息后,我在第二个字段中输入文本时,所有错误消息都会消失 :(
    【解决方案2】:

    您是否尝试过使用验证组?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      相关资源
      最近更新 更多