我第一次使用CustomValidator但它似乎没有触发DateExpireRequired_ServerValidate,只是在Click动作中运行代码。
现在一直在烦我几个小时!任何人都可以看到我正在做什么的问题?
下面我的代码中的DropDownList使用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>
代码背后
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
谢谢J。
答案 0 :(得分:1)
您的自定义验证程序定义中包含Enabled="false"
。我认为这会禁用验证器。
答案 1 :(得分:0)
答案如同Menno van den Heuvel上面的评论:
您是否将validateemptytext设置为True?我看到你在事件处理程序中检查一个空字符串,但如果绑定控件的值为空,则不会运行事件处理程序。