Asp.net asp页上的自定义验证器即使在条目无效时也返回page.IsValid(true)

Asp.net asp页上的自定义验证器即使在条目无效时也返回page.IsValid(true),asp.net,validation,email-validation,Asp.net,Validation,Email Validation,我有一段代码需要修复 <td> <asp:TextBox ID="txtEmail" runat="server" CssClass="TextBoxCss"></asp:TextBox> <asp:RequiredFieldValidator ID="reqEmail" runat="server" ControlToValidate="txtEmail" ErrorMessage="Enter Email" Validat

我有一段代码需要修复

<td>
   <asp:TextBox ID="txtEmail" runat="server" CssClass="TextBoxCss"></asp:TextBox>
   <asp:RequiredFieldValidator ID="reqEmail" runat="server" ControlToValidate="txtEmail"
        ErrorMessage="Enter Email" ValidationGroup="entryvalid" Display="None">  
   </asp:RequiredFieldValidator>
   <asp:ValidatorCalloutExtender ID="ValidatorCalloutExtender4" runat="server" 
        TargetControlID="reqEmail"  CssClass="CustomValidator" />
   <asp:CustomValidator ID="valEmail" ControlToValidate="txtEmail" Display="None"
        runat="server" ValidationGroup="entryvalid" ErrorMessage="Invalid Email Address"
        ClientValidationFunction="ValidateEmail" />
   <asp:ValidatorCalloutExtender ID="ValidatorCalloutExtender3" runat="server" 
        TargetControlID="valEmail" CssClass="CustomValidator" />
</td>
电子邮件验证功能:

function ValidateEmail(source, arguments) {
    var val1 = $.trim(arguments.Value.toLowerCase());
    var regexemail = /^([\w-_]+\.)*[\w-_]+@([\w-_]+\.)*[\w-_]+\.[\w-_]+$/;
    arguments.IsValid = regexemail.test(val1);
}
但当我发送无效电子邮件时(“user@gmail@.com”)它表示“无效条目”,但Page.IsValid返回的是True

有人能告诉我哪里可能出错吗?

试试这个Aspx代码:

<asp:RequiredFieldValidator runat="server" ID="rfvEmail" Display="None" ControlToValidate="txtEmail"
                            InitialValue="" ValidationGroup="SubscriptionDetails" ErrorMessage="Email is Mandatory"
                            ForeColor="Red"></asp:RequiredFieldValidator>
                        <ajaxToolkit:ValidatorCalloutExtender ID="vceEmail" TargetControlID="rfvEmail" runat="server">
                        </ajaxToolkit:ValidatorCalloutExtender>
                        <asp:RegularExpressionValidator ID="regexEmailValid" runat="server" ValidationExpression="^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"
                            ControlToValidate="txtEmail" ErrorMessage="Invalid Email" ValidationGroup="SubscriptionDetails"
                            Display="None"></asp:RegularExpressionValidator>
                        <ajaxToolkit:ValidatorCalloutExtender ID="vce1Email" TargetControlID="regexEmailValid"
                            runat="server">
                        </ajaxToolkit:ValidatorCalloutExtender>

尝试以下Aspx代码:

<asp:RequiredFieldValidator runat="server" ID="rfvEmail" Display="None" ControlToValidate="txtEmail"
                            InitialValue="" ValidationGroup="SubscriptionDetails" ErrorMessage="Email is Mandatory"
                            ForeColor="Red"></asp:RequiredFieldValidator>
                        <ajaxToolkit:ValidatorCalloutExtender ID="vceEmail" TargetControlID="rfvEmail" runat="server">
                        </ajaxToolkit:ValidatorCalloutExtender>
                        <asp:RegularExpressionValidator ID="regexEmailValid" runat="server" ValidationExpression="^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"
                            ControlToValidate="txtEmail" ErrorMessage="Invalid Email" ValidationGroup="SubscriptionDetails"
                            Display="None"></asp:RegularExpressionValidator>
                        <ajaxToolkit:ValidatorCalloutExtender ID="vce1Email" TargetControlID="regexEmailValid"
                            runat="server">
                        </ajaxToolkit:ValidatorCalloutExtender>

我将此用于电子邮件验证:

<asp:RegularExpressionValidator ID="valEmail" runat="server" 
  ErrorMessage="* Please enter a valid email address" 
  ControlToValidate="txtEmail"
  ValidationGroup="Group1" 
  ValidationExpression="^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})$">
</asp:RegularExpressionValidator>
现在,当调用
Page.IsValid
时,服务器将了解自定义验证器


请参见

我将此用于电子邮件验证:

<asp:RegularExpressionValidator ID="valEmail" runat="server" 
  ErrorMessage="* Please enter a valid email address" 
  ControlToValidate="txtEmail"
  ValidationGroup="Group1" 
  ValidationExpression="^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})$">
</asp:RegularExpressionValidator>
现在,当调用
Page.IsValid
时,服务器将了解自定义验证器


请参见

您可以发布用于电子邮件验证的代码吗?可以。。我已经更新了这个问题。你能发布你的电子邮件验证代码吗?是的。。我已经更新了question.thnx,但是我的项目中没有ajaxtoolkit。我们不能没有它吗当然我可以下载,但是客户端不允许。但是你可以使用asp validatorcalloutextender代替ajaxthnx,但是我的项目中没有ajaxtoolkit。没有它我们就不能这样做。当然我可以下载,但是客户端不允许。但是你可以使用asp validatorcalloutextender而不是Ajax。实际上电子邮件验证是正确的,它给出的是“无效电子邮件”(args.IsValid=false),但是Page.IsValid给出的是真的。实际上电子邮件验证是正确的,它给出的是“无效电子邮件”(args.IsValid=false)但是Page.IsValid给出的是true。