我要求多个字段之一是必需的。使用自定义验证器,偶数触发,返回false,但不显示错误消息,表单验证。
我错过了什么?我曾尝试使用和不使用ValidationSummary。
谢谢!
<asp:CustomValidator ID="CustomValidator1" OnServerValidate="validatePhone" EnableClientScript="false" runat="server" ErrorMessage="Home or Cell Phone is Required" ></asp:CustomValidator>
<asp:ValidationSummary ID="ValidationSummary1" DisplayMode="BulletList" runat="server" ForeColor="Red" Font-Size="X-Small" Font-Bold="true" />
protected void validatePhone(object sender, ServerValidateEventArgs e)
{
e.IsValid = string.IsNullOrEmpty(txtCellPhone.Text) && string.IsNullOrEmpty(txtHomePhone.Text) ? false : true;
}
答案 0 :(得分:1)
您必须将ControlToValidate设置为某个TextBox。
<asp:CustomValidator ID="CustomValidator1" OnServerValidate="validatePhone" EnabEnableClientScript="false" runat="server" ErrorMessage="Home or Cell Phone is Required" ControlToValidate="txtHomePhone"/>
答案 1 :(得分:1)
结帐this article。基本上你需要连接客户端验证。 在结束表单标记之前添加以下内容,根据需要更改控件名称:
<%-- This configures the validator to automatically--%>
<%-- update when either of these controls is changed --%>
<script type="text/javascript">
<!--
ValidatorHookupControlID("<%= MyControl1.ClientID %>",
document.getElementById["<%= CustomValidator1.ClientID %>"]);
ValidatorHookupControlID("<%= MyControl2.ClientID %>",
document.getElementById["<%= CustomValidator1.ClientID %>"]);
//-->
</script>
或者使用this control
答案 2 :(得分:1)
问题完全是我的错。在我的提交按钮上,我做的最后一件事是Response.Redirect。消息即将发布,但随后出现了感谢页面。现在只有在customvalidator返回true时才执行Response.Redirect。