用于检查ASP.NET中的电子邮件地址是否有效的注释

时间:2014-09-01 16:09:14

标签: c# asp.net asp.net-mvc validation asp.net-mvc-5

我正在尝试验证用户输入的电子邮件地址是否为有效的电子邮件地址。我试图使用我读过的以下数据注释:

    [Required]
    [DataType(DataType.EmailAddress)]
    [DisplayName("Email Address")]
    public string Email { get; set; }

因此,您可以看到我使用了[DataType(DataType.EmailAddress)]。这似乎不起作用。是否有任何其他方法可用于检查电子邮件地址是否有效。我花了最后108个小时来处理这个问题,我觉得现在是时候了。

4 个答案:

答案 0 :(得分:1)

您可以使用正则表达式验证

[RegularExpression("/^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$/", ErrorMessage = "Lorem ipsum bla bla")]

答案 1 :(得分:1)

如果您使用以下标记,它将呈现html 5输入类型的电子邮件:

<强>标记

 @Html.EditorFor(m => m.Email)
 @Html.ValidationMessageFor(m => m.Email)

呈现输出

<input class="text-box single-line" data-val="true" 
 data-val-required="The Email Address field is required." 
 id="Email" name="Email" type="email" value="">

这将阻止符合html 5的浏览器无效提交。

<强> jsFiddle

答案 2 :(得分:0)

System.Net.Mail.MailAddress类可以处理这个问题。如果地址是无法识别的格式,它将抛出FormatException。在MSDN上查看:http://msdn.microsoft.com/en-us/library/591bk9e8(v=vs.110).aspx

答案 3 :(得分:0)

根据this answer

Datatype.Emailaddress派生自DataTypeAttribute并添加客户端电子邮件验证,您还需要在相应的视图中设置<% Html.EnableClientValidation(); %>

正如hutchonoid指出的那样,这将生成一个HTML5 <input type="email" ... />输入字段,这将允许浏览器为您预先验证并提供&#34;电子邮件&#34;移动设备上的键盘。

对于服务器端验证,您可以使用DataAnnotations使用EmailAddressAttribute库:

using System.ComponentModel.DataAnnotations; 

[Required]
[EmailAddress]
[DataType(DataType.EmailAddress)]
[DisplayName("Email Address")]
public String Email { get; set; }

或者,您可以使用RegularExpressionAttribute并获得客户端和服务器端验证,但不进行HTML5字段渲染。