2009-11-20 68 views
0

我创建了自定义控件和自定义验证器(扩展了BaseValidator)。在自定义控件上,我设置了ValidationProperty(“Values”)。问题是,除非我执行Page.Validate(),否则发送回发时验证不起作用。而当我打电话Page.Validate()所有验证器都执行这不是我期望回发。创建自定义ASP.NET验证器

所以问题是我该如何创建自定义验证器,当控制值更改并验证该控件时将执行该验证器?

回答

1

这不是验证者的工作方式。除非您使用ValidationGroup设置,否则页面上的所有验证器都会自动激活。您不必显式调用Page.Validate()。你需要不过来包装你的代码在这样的检查,:

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

不像客户端验证,服务器端验证不会阻止该网页回发和处理事件为正常。

要创建一个只有在控件值发生变化时才会生效的控件,需要一些hackery,因为更改事件在验证器执行后触发。

+0

是的,这实际上是悲伤的。我只是发现,如果我用两个验证器创建两个字段,并且其中一个字段将AutoPostBack属性设置为true,那么当客户端验证第一个字段并显示错误消息后,我在第二个字段中输入文本时,所有错误消息消失:( – 2009-11-21 14:56:36

0

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