c# - 如果我的电子邮件地址格式不正确,我怎样才能让我的按钮不通过?

标签 c# asp.net textbox email-validation

我的电子邮件地址文本框中有必填字段验证器和正则表达式验证器。如果电子邮件没有值(value)或格式不正确,则会显示这两个验证器。但是,当我单击提交按钮并尝试在电子邮件文本框中输入错误的值(例如我输入数字 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" />

关于c# - 如果我的电子邮件地址格式不正确,我怎样才能让我的按钮不通过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31238026/

相关文章:

c# - 通过避免文本框验证来关闭 C# windows 窗体

C# - 将十进制转换为 int32

c# - 如何从 XAML 代码更改 ItemsPanelTemplate WrapGrid?

c# - 自定义 Nullable<T> 扩展方法和 SelectMany

c# - 如何阻止我的 ObjectDataSource 绑定(bind)两次?

javascript - Jquery 清除文本框不起作用?

c# - 从 excel 粘贴到文本框

c# - 在 C#.NET 中动态转换为类型

c# - asp.net mysql数据库中的两个下拉列表和一个表

asp.net - 部署 VS-2008 Web 项目的最佳方式