J'ai quelques problèmes avec la validation d'un Email.
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; }
À mon avis:
<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)
Maintenant, il me montre correctement "Le champ ne peut pas être vide" lorsque vous laissez le champ vide. Mais lorsque vous remplissez une adresse e-mail invalide comme: "fwenrjfw", le formulaire ne dit pas "L'e-mail n'est pas valide".
Comment puis-je obtenir le formulaire pour valider l'entrée en tant qu'adresse e-mail? Je cherche de l'aide pour cela.
c#
asp.net-mvc
validation
email-validation
Java Afca
la source
la source
[DataType(DataType.EmailAddress, ErrorMessage = "Error message.")]
DataType.EmailAddress
n'est pas une question de validation. Il s'agit de la présentation des données ...name@xxx
est une adresse e-mail entièrement valide, il n'y a donc rien de mal avec cette méthode. Prenons l'exempleusername@localhost
par exemple.Essayez la
Html.EditorFor
méthode d'assistance au lieu deHtml.TextBoxFor
.la source
Vous devez utiliser l'attribut RegularExpression, quelque chose comme ceci:
Et ne supprimez pas [Obligatoire] car [RegularExpression] n'affecte pas les champs vides.
la source
si vous n'utilisez pas encore .net 4.5:
Ensuite, vous pouvez faire ceci:
la source
J'utilise MVC 3. Un exemple de propriété d'adresse e-mail dans l'une de mes classes est:
Supprimez le
Required
si l'entrée est facultative. Pas besoin d'expressions régulières bien que j'en ai une qui couvre toutes les options d'une adresse e-mail jusqu'au niveau RFC 2822 (c'est très long).la source
[EmailAddress]
et vous devez avoirusing System.ComponentModel.DataAnnotations;
Email
ou l' autreRegularExpression
rend le champ obligatoire. La suppression de l'Required
annotation n'a aucun effet. Des suggestions sur la marche à suivre pour que les champs avecRegularExpression
validation acceptent les champs vides?la source
la source
Les scripts sont généralement chargés à la fin de la page html, et MVC recommande l'utilisation de bundles, en disant simplement. Donc, mon meilleur pari est que vos
jquery.validate
fichiers ont été modifiés d'une manière ou d'une autre ou ne sont pas mis à jour vers la dernière version, car ils valident les entrées de courrier électronique.Vous pouvez donc mettre à jour / actualiser votre paquet nuget ou écrire votre propre fonction, vraiment.
Voici un exemple que vous ajouteriez dans un fichier supplémentaire après
jquery.validate.unobtrusive
:Ceci est juste un copier-coller du
jquery.validate
Regex actuel , mais de cette façon, vous pouvez définir votre message d'erreur personnalisé / ajouter des méthodes supplémentaires aux champs que vous voudrez peut-être valider dans un proche avenir.la source
Comme indiqué ci-dessus, cela corrigera la validation côté serveur d'une adresse e-mail:
Toutefois...
Si vous utilisez la validation côté client JQuery, vous devez savoir que l'e-mail valide différemment du côté serveur (validation du modèle) au côté client (validation JQuery). Dans ce test @ example (une adresse e-mail de domaine de premier niveau) échouerait côté serveur mais validerait bien du côté client.
Pour corriger cette disparité, vous pouvez remplacer la validation par e-mail côté client par défaut comme suit:
la source