Est-ce que DataTypeAttribute sur un modèle effectue une validation dans MVC 3?
La valeur par défaut ASP.net MVC 3 Internet le modèle d'Application comprend les modèles suivants:
public class RegisterModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email address")]
public string Email { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
Dans le Compte/s'Inscrire l'action, il demande une adresse e-mail, mais il semble que vous pouvez taper n'importe quoi dans ce domaine et il va l'accepter.
Le Type de données(DataType.Votre adresse de courrier électronique) à déclencher la validation? Il semble que cela ne fonctionne pas. Si ce n'est pas valider le type, quel est son but?
source d'informationauteur Travis | 2011-07-01
Vous devez vous connecter pour publier un commentaire.
Pour autant que je suis au courant, le Type de données de l'attribut est utilisé pour le formatage, mais uniquement lorsque vous utilisez
@Html.EditorFor(model => model.Field)
.Exemples de modèle de champs, cshtml et le HTML résultant:
Champs de modèle:
Cshtml:
HTML résultant:
Je sais que c'est un vieux post, mais je peux peut-être faire la lumière sur la situation d'autres personnes qui viennent de cette façon
EDIT:
Il peut être la validation de certains attachés à ces données, mais uniquement côté client. Ne comptez pas sur ces attributs réels de la validation, il doit toujours le faire côté serveur (côté client est seulement pour l'expérience de l'utilisateur)
Il n'y a PAS de validation associés avec les attributs de Type de données dans la version actuelle de MVC3. De nouveaux attributs découlant de cet attribut sont montrés dans la MVC de contrats à Terme et d'ajouter à ce processus de validation. (EmailAdressAttribute par exemple)
Le modèle par défaut n'ajoute pas le bon Validate.js les scripts de la page maître. Les annotations de données juste sortie HTML le javascript les lectures à faire la validation côté client.
Dans les actions de votre contrôleur, vous devez faire le Modèle.IsValid pour assurer la validation côté serveur.
Je ne pouvais pas obtenir que validateur au travail et a fini par écrire mon propre semblable à on a retrouvé sur le ASP.net site. Soi-disant un [e-mail] annotation est disponible dans MVC3 Avenir.
Attributs de type de données sont utilisées par l'basées sur des modèles de vues lors de l'utilisation editorfor()
Attributs de type de données ne sont pas des attributs de validation. Ils sont utilisés pour la création de modèles. ex. vous pouvez utiliser le html 5 e-mail de tag de Type de données.E-mail. JakeJ détaillé.