首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CustomValidator ServerValidate方法不触发

CustomValidator ServerValidate方法不触发
EN

Stack Overflow用户
提问于 2012-04-16 10:27:18
回答 2查看 21.4K关注 0票数 12

我在我的表格上放了一个CustomValidator。我没有设置它的ControlToValidate属性。在其ServerValidate事件中,我编写了以下内容:

代码语言:javascript
复制
protected void CustomValidator1_ServerValidate(object source,      
                                               ServerValidateEventArgs args)
{
    args.IsValid = false;
}

我在这个方法上放置了一个断点,但它似乎从来没有达到这个目的。但如果我用另一种形式来做这件事,它就像一种魅力。

  1. 按钮和CustomValidatorValidationGroup属性都是相同的
  2. ,我尝试在按钮和CustomValidator中删除该属性,但仍然无法工作。

好像有某种形式上的东西。我只是在表单上放置了一个CustomValidator,除了设置它的ServerValidate事件方法之外,不碰它的任何属性。

编辑:下面是aspx部分:

代码语言:javascript
复制
 <asp:CustomValidator ID="CustomValidator2" runat="server" 
       ErrorMessage="This is a test" 
   onservervalidate="CustomValidator1_ServerValidate" 
   ValidationGroup="PA"></asp:CustomValidator>


<asp:Button ID="btnPensionersOK" runat="server" Text="OK" Width="75px" 
          onclick="Button1_Click" ValidationGroup="PA" />
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-16 10:43:49

尝试通过Page.Validate强制在按钮单击处理程序中进行验证。

代码语言:javascript
复制
protected void Button1_Click(Object sender, EventArgs e)
{
    Page.Validate();
    if(Page.IsValid)
    {
       // servervalidate should have been called
    }
}

编辑(来自评论):

如果希望自定义验证器验证控件中没有输入/选择任何内容,则需要将ValidateEmptyText设置为true。您还可能希望让CustomValidator替换RequiredFieldValidators

我假设aspx上的验证程序命令决定是否调用自定义验证器的单独验证,如果先前的验证器已经生成了Page.IsValid=false。或者ASP.NET是如此的聪明,以至于它假设SeverValidate比一个简单的文本为空的检查更昂贵。

票数 28
EN

Stack Overflow用户

发布于 2012-04-16 13:09:34

我还想为那些同时使用CustomValidators和RequiredFieldValidators的人提供更多的帮助。应该考虑到客户端验证是首先进行的。只有在PostBack之后才会进行服务器端验证。我肯定您明白了,但万一这还不太清楚:这意味着,首先,绑定到某些客户端的所有控件都必须有效,才能让回发发生。在佩奇之后。IsValid是真正的服务器端内容,会发生并回发任何更改,其中包括服务器端验证消息。

因此,下面是使CustomVCalidators和其他内置的验证器同时工作的方法。

  1. 将两组验证器设置为在客户端工作。在这种情况下,我们必须确保对于自定义valitor,我们对将在客户端进行验证的脚本进行间隔。如果将ServerValidate属性设置为True,则无需编写脚本,只需填写server.Even方法即可进行验证。
  2. 将两组验证器设置为在服务器端工作。要做到这一点,只需将EnableClientScript设置为False。但是请注意,这将加载服务器.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10172406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档