代码之家  ›  专栏  ›  技术社区  ›  Zack Peterson

为什么我的ASP。NET自定义验证器是否验证?

  •  4
  • Zack Peterson  · 技术社区  · 16 年前

    我一定是做错了什么。我似乎无法执行CustomValidator的ServerValidate方法。

    我有一个Visual Basic ASP。NET页面,带有CustomValidator。..

    <asp:TextBox ID="TextBox1" runat="server" />
    <asp:CustomValidator ID="CustomValidator1" runat="server"
        ControlToValidate="TextBox1"
        ErrorMessage="Friendly message goes here."
        Display="Dynamic" />
    <asp:Button ID="Button1" runat="server"
        Text="Submit"
        CausesValidation="True" />
    

    对于这个测试,我的验证集总是失败。..

    Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate
        args.IsValid = False
    End Sub
    

    但是,当单击按钮时,CustomValidator1_ServerValidate()方法永远不会执行!

    Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Page.Validate()
        If Page.IsValid Then
            'it executes the code here!
        End If
    End Sub
    

    即使我明确地验证了该控件。..

    CustomValidator1.Validate() 'does nothing?
    

    我做错了什么?

    4 回复  |  直到 16 年前
        1
  •  9
  •   Gavin Miller    16 年前

    添加属性:

     ValidateEmptyText="True"
    
        2
  •  2
  •   Kon    16 年前

    您是否将验证器控件提交按钮放在同一个验证组中?

        3
  •  1
  •   Russ Cam    16 年前

    首先,您在上面的标记中似乎缺少OnServerValidate属性。

    其次,我将检查以确保CustomValidator1_ServerValidate已设置为Textbox1的ServerValidate事件的事件处理程序。我曾在标记和代码后面更改了验证方法的名称,但IDE没有自动更新传递给事件处理程序委托的订阅方法名称

        4
  •  1
  •   Community CDub    10 年前

    我知道这是一个愚蠢的问题(或者听起来像!)。但你真的在文本框中输入或更改了值吗?一、 认为 如果文本框的内容不变,验证器将不会触发。

    推荐文章
    Robin  ·  自定义验证代码
    11 年前