如果我的电子邮件地址格式不正确,我该如何使我的按钮不通过

本文关键字:我的 按钮 何使 地址格式 电子邮件 不正确 如果 | 更新日期: 2023-09-27 18:01:19

我的电子邮件地址文本框上有所需的字段验证器和正则表达式验证器。如果电子邮件没有值或格式不正确,则会显示这两个验证器。然而,当我点击提交按钮,并试图在电子邮件文本框上输入错误的值(例如,我输入了数字2(时,程序仍然会按下提交按钮功能。有没有什么技巧或参考资料可以让我按下按钮,直到电子邮件文本框的格式正确为止(abc@yahoo.com)?感谢您的建议。:(

这是我的电子邮件文本框代码:

<asp:TextBox ID="txtCustomerEmailID" runat="server" Width="231px"></asp:TextBox>
                                                                    <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" 
                                                                        ErrorMessage=" Email Address is Required." ForeColor="Red" ControlToValidate="txtCustomerEmailID"
                                                                        validationgroup="PersonalInfoGroup"
                                                                        ></asp:RequiredFieldValidator>

这是我的提交订单按钮

<asp:Button ID="btnPlaceOrder" runat="server" OnClick ="btnPlaceOrder_Click"
                                                                    Style = "font-weight:700" Text="PlaceOrder" Width="90px" validationgroup="PersonalInfoGroup" />

此外,我有一个电子邮件引擎,当我点击按钮时,它将指向电子邮件地址。我将显示电子邮件引擎的代码,因为当它使用错误的电子邮件地址时,错误会出现在这里。

using (MailMessage mailMessage = new MailMessage())
        {
            mailMessage.From = new MailAddress(ConfigurationManager.AppSettings["Username"]);
            mailMessage.Subject = subject;
            mailMessage.Body = body;
            mailMessage.IsBodyHtml = true;
            mailMessage.To.Add(new MailAddress(recipientEmail));
            SmtpClient smtp = new SmtpClient();
            smtp.Host = ConfigurationManager.AppSettings["Host"];
            smtp.EnableSsl = Convert.ToBoolean(ConfigurationManager.AppSettings["EnableSsl"]);
            System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
            NetworkCred.UserName = ConfigurationManager.AppSettings["UserName"];
            NetworkCred.Password = ConfigurationManager.AppSettings["Password"];
            smtp.UseDefaultCredentials = false;
            smtp.Credentials = NetworkCred;
            smtp.Port = int.Parse(ConfigurationManager.AppSettings["Port"]);
            smtp.Send(mailMessage);
        }

最后,错误:指定的字符串不是电子邮件地址所需的格式。

mailMessage.To.Add(new MailAddress(recipientEmail));

如果我的电子邮件地址格式不正确,我该如何使我的按钮不通过

您必须更改文本框和按钮的验证组

<asp:TextBox ID="txtCustomerEmailID" runat="server" Width="231px" validationgroup="PersonalInfoGroup" ></asp:TextBox>
                                                                    <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" 
                                                                        ErrorMessage=" Email Address is Required." ForeColor="Red" ControlToValidate="txtCustomerEmailID"
                                                                        validationgroup="PersonalInfoGroup"
                                                                        >

<asp:Button ID="btnPlaceOrder" runat="server" OnClick ="btnPlaceOrder_Click"
                                                                    Style = "font-weight:700" Text="PlaceOrder" Width="90px" validationgroup="PersonalInfoGroup" />
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="RegularExpressionValidator" ValidationExpression="'w+([-+.']'w+)*@'w+([-.]'w+)*'.'w+([-.]'w+)*"></asp:RegularExpressionValidator>

还需要RegularExpressionValidator

你可以用这种方式重定向你的方法,

HTML

<asp:TextBox ID="txtCustomerEmailID" runat="server" Width="231px"></asp:TextBox>
<asp:RegularExpressionValidator ID="regexEmailValid" runat="server" ValidationExpression="'w+([-+.]'w+)*@'w+([-.]'w+)*'.'w+([-.]'w+)*" ControlToValidate="txtCustomerEmailID" ErrorMessage="Invalid Email Format"></asp:RegularExpressionValidator>

代码隐藏:

if(txtCustomerEmailID!="")
{
   //Your Stuffs
}
else
{
   // Do some script to give alert or use label to make display the text as you wish
}