【问题标题】:Why won't my ASP.NET CustomValidator validate?为什么我的 ASP.NET CustomValidator 无法验证?
【发布时间】:2010-10-03 15:33:47
【问题描述】:

我一定是做错了什么。我似乎无法执行我的 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() '什么都不做?

我做错了什么?

【问题讨论】:

    标签: asp.net vb.net customvalidator


    【解决方案1】:

    添加属性:

     ValidateEmptyText="True"
    

    【讨论】:

    • 解决了。谢谢你。我使用 CustomValidator 作为有条件的RequiredFieldValidator。是否需要 TextBox,具体取决于页面上其他控件的值。所以,需要对空文本进行验证。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 我的文本框是空的。这就是问题所在。
        猜你喜欢
        • 1970-01-01
        • 2018-10-20
        • 2020-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 2020-09-18
        • 2014-11-15
        相关资源
        最近更新 更多