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

本文关键字:有效 是否 NET 检查 电子邮件地址 ASP 用于 | 更新日期: 2023-09-27 18:20:10

我正在尝试验证用户输入的电子邮件地址是否为有效的电子邮件地址。我已经尝试使用以下数据注释,我读到应该可以工作:

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

正如你所看到的,我使用了[DataType(DataType.EmailAddress)]。这似乎不起作用。有没有其他方法可以用来检查电子邮件地址是否有效。在过去的108个小时里,我一直在做这件事,我觉得是时候继续前进了。

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

您可以使用regexp验证

[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")]

如果使用以下标记,它将呈现一个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

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

根据这个答案:

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

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

对于服务器端评估,您可以使用EmailAddressAttribute:使用DataAnnotations

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

或者,您可以使用RegularExpressionAttribute并获得客户端和服务器端验证,但不需要HTML5字段呈现。