176 votes

Adresse Email de validation à l'aide de ASP.NET MVC type de données des attributs

J'ai quelques problèmes avec la validation d'un e-Mail.

Dans mon Modèle:

[Required(ErrorMessage = "Field can't be empty")]
[DataType(DataType.EmailAddress, ErrorMessage = "E-mail is not valid")]
public string ReceiverMail { get; set; }

De mon point de vue:

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@Html.TextBoxFor(m => m.ReceiverMail, new { @placeholder="E-mail"}) <br />
@Html.ValidationMessageFor(m => m.ReceiverMail)

Il est maintenant correctement en me montrant "Champ ne peut pas être vide" lorsque vous laissez le champ vide. Mais lorsque vous renseignez une adresse email non valide comme: "fwenrjfw" alors la forme ne dit pas "E-mail n'est pas valide".

Comment puis-je obtenir le formulaire afin de valider la saisie de l'adresse e-mail? Je suis à la recherche d'un peu d'aide avec cela.

354voto

Shittu Olugbenga Points 756

Si vous êtes en utilisant .NET Framework 4.5, la solution est d'utiliser EmailAddressAttribute qui réside à l'intérieur d' System.ComponentModel.DataAnnotations.

Votre code devrait ressembler à ceci:

    [Display(Name = "Email address")]
    [Required(ErrorMessage = "The email address is required")]
    [EmailAddress(ErrorMessage = "Invalid Email Address")]
    public string Email { get; set; }

40voto

hazimdikenli Points 1372

essayez de Html.EditorFor au lieu de TextBoxFor

35voto

Alexander Imra Points 266

Vous avez besoin d'utiliser RegularExpression Attribut, quelque chose comme ceci:

[RegularExpression("^[a-zA-Z0-9_\\.-]+@([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$", ErrorMessage = "E-mail is not valid")]

Et de ne pas le supprimer [Obligatoire] parce que [RegularExpression] n'affecte pas les champs vides.

10voto

Peter Smith Points 1035

J'utilise MVC 3. Un exemple de l'adresse email de la propriété dans une de mes classes:

[Display(Name = "Email address")]
[Required(ErrorMessage = "The email address is required")]
[Email(ErrorMessage = "The email address is not valid")]
public string Email { get; set; }

Supprimer l' Required si l'entrée est facultative. Pas besoin pour les expressions régulières, bien que j'en ai un qui couvre toutes les options au sein d'une adresse e-mail jusqu'à la RFC 2822 niveau (c'est très long).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X