J'ai le modèle suivant:
public class FormularModel
{
[Required]
public string Position { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Required]
public string Webcode { get; set; }
}
La validation requise fonctionne bien. Mais lorsque j'essaie avec DataType, il ne réagit pas.
Voici mon code de rasoir pour le contrôle de messagerie:
@Html.TextBoxFor
(model => model.Email,
new { @style = "width: 175px;", @class = "txtField" }
) *
Alors, quelqu'un connaît une réponse?
TIA
L'attribut DataType
est utilisé à des fins de formatage et non de validation.
Je vous suggère d'utiliser ASP.NET MVC 3 Futures pour la validation du courrier électronique.
Exemple de code:
[Required]
[DataType(DataType.EmailAddress)]
[EmailAddress]
public string Email { get; set; }
Si vous utilisez .NET Framework 4.5
, il y a maintenant un construit dans EmailAddressAttribute
qui habite System.ComponentModel.DataAnnotations.EmailAddressAttribute
.
Le projet DataAnnotationsExtensions a un attribut Email que vous pouvez utiliser.
J'ai regardé le code source (reverse engineering par Reflector) et les variantes de DataType
ne sont même pas implémentées! (C'était pour DateType.Date
)
Donc, ça ne va pas marcher.
Personnellement, j'utiliserais RegexValidation
pour le courrier électronique.
Pour plus de clarté, voici l'implémentation de IsValid
dans la classe DataTypeAttribute
:
public override bool IsValid(object value)
{
return true;
}