4

我一定做错了什么。我似乎无法执行我的 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) 处理 CustomValidator1.ServerValidate
    args.IsValid = False
结束子

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

Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 处理 Button1.Click
    Page.Validate()
    If Page.IsValid Then
        '它在这里执行代码!
    万一
结束子

即使我明确地验证该控制...

CustomValidator1.Validate() '什么都不做?

我究竟做错了什么?

4

4 回答 4

9

添加属性:

 ValidateEmptyText="True"
于 2009-01-26T21:45:54.993 回答
2

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

于 2009-01-26T21:46:18.923 回答
1

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

于 2009-01-26T21:43:56.120 回答
1

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

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

于 2009-01-26T21:51:54.543 回答