I am using the CustomValidator for the first time but it doesn't seem to be firing DateExpireRequired_ServerValidate and just runs the code in the Click action.

Been bugging me for a couple hours now! can anyone see a problem with what im doing?

The DropDownList in my code below is populated using Roles.GetAllRoles()

ASP.NET

<asp:Label ID="lUserRole" runat="server" AssociatedControlID="tUserRole">User Role:</asp:Label>
<asp:DropDownList ID="tUserRole" runat="server" CausesValidation="True">
</asp:DropDownList>

<asp:Label ID="lDateExpire" runat="server" AssociatedControlID="tDateExpire">Date Expire:</asp:Label>
<asp:TextBox ID="tDateExpire" runat="server"></asp:TextBox>
<asp:CustomValidator ID="DateExpireRequired" runat="server"
                ControlToValidate="tDateExpire" ErrorMessage="Date Expire is required for 'Users'." OnServerValidate="DateExpireRequired_ServerValidate"
                ToolTip="Date Expire is required for 'Users'." CssClass="frmError"></asp:CustomValidator>

CODE BEHIND

    Sub DateExpireRequired_ServerValidate(source As Object, args As System.Web.UI.WebControls.ServerValidateEventArgs)

    If tUserRole.SelectedValue = "User" Then
        If tDateExpire.Text <> "" Then
            args.IsValid = False
        Else
            args.IsValid = True
        End If
    Else
        args.IsValid = True
    End If

End Sub

Thanks J.

有帮助吗?

解决方案 2

The answer was as in Menno van den Heuvel's comment above:

Do you have validateemptytext set to True? I see that you check for an empty string in your event handler, but the event handler won't be run if the bound control's value is empty.

其他提示

You have Enabled="false" in your custom validator definition. I assume this is disabling that validator.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top