为什么我的ASP.NET CustomValidator不会验证?

时间:2009-01-26 21:40:27

标签: asp.net vb.net customvalidator

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

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

<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 个答案:

答案 0 :(得分:9)

添加属性:

 ValidateEmptyText="True"

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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