我有两个Custom Validators
附加到文本框。文本框用于输入逗号分隔的电子邮件列表。第一个验证器检查没有重复的电子邮件地址。第二个自定义验证程序检查所有电子邮件地址是否为有效格式。我有以下代码,它工作正常。
然而,当两个失败标准都满足时,它们都会被触发,我在文本框的右侧得到两个*
。什么是一次只显示一个*
的最佳方法?
CODE
<asp:CustomValidator ID="valEmailRecipients" runat="server" ControlToValidate="txtEmailRecipients"
ClientValidationFunction="isUniqueElements" OnServerValidate="IsUniqueEmail_Validate"
Text="*" ErrorMessage="There should be no duplicate email address for a report"
ValidationGroup="Save">
</asp:CustomValidator>
<asp:CustomValidator ID="valEmailFormat" runat="server" ControlToValidate="txtEmailRecipients"
ClientValidationFunction="checkEmailFormat" OnServerValidate="IsValidEmailFormat_Validate"
Text="*" ErrorMessage="Entries should be valid email addresses separated by comma"
ValidationGroup="Save">
</asp:CustomValidator>
参考:
答案 0 :(得分:2)
最简单的方法: - 如果电子邮件的格式不正确,请让valEmailRecipients返回true
。也就是说,只有在其他验证成功的情况下,它才能发挥作用。
其他方式: - Disabling
和Enabling
验证器,这可能很痛苦。
出于好奇,为什么2个星号有问题?
答案 1 :(得分:1)
创建一个自定义验证器,并在其上执行所有验证逻辑。
如果未通过一个验证,请将相应的错误消息设置为它,将args.IsValid设置为false并结束该方法。
在提交按钮上,记得检查Page.IsValid。