Quelle est la différence de comportement [MaxLength]
et d' [StringLength]
attributs?
Autant que je sache (à l'exception qui [MaxLength]
peut valider la longueur maximale d'un tableau), ils sont identiques et quelque peu redondants?
asp.net-mvc-3
ef-code-first
entity-framework-4.1
Nick Goloborodko
la source
la source
Réponses:
MaxLength est utilisé pour Entity Framework pour décider de la taille d'un champ de valeur de chaîne lors de la création de la base de données.
Depuis MSDN:
StringLength est une annotation de données qui sera utilisée pour la validation de l'entrée utilisateur.
Depuis MSDN:
la source
MaxLengthAttribute
, alorsStringLengthAttribute
[MaxLength]
alors un ErrorMessage?Quelques informations supplémentaires rapides mais extrêmement utiles que je viens d'apprendre d'un autre article, mais que je n'arrive pas à trouver la documentation pour (si quelqu'un peut partager un lien vers celui-ci sur MSDN, ce serait incroyable):
Les messages de validation associés à ces attributs remplaceront en fait les espaces réservés associés aux attributs. Par exemple:
Affiche le message suivant s'il dépasse la limite de caractères: "L'adresse peut contenir au maximum 100 caractères"
Les espaces réservés dont je suis conscient sont:
Un grand merci à bloudraak pour l'avoir signalé au départ.
la source
Voici les résultats lorsque nous utilisons les deux attributs
[MaxLength]
et[StringLength]
, dansEF code first
. Si les deux sont utilisés,[MaxLength]
remporte la course. Voir le résultat du test dans lastudentname
colonne de la classe ci-dessousla source
Toutes les bonnes réponses ... Du point de vue de la validation, j'ai également remarqué que MaxLength est validé uniquement côté serveur, tandis que StringLength est également validé côté client.
la source
MaxLengthAttribute signifie Max. longueur de tableau ou de chaîne de données autorisée
StringLengthAttribute signifie Min. et max. longueur des caractères autorisés dans un champ de données
Visitez http://joeylicc.wordpress.com/2013/06/20/asp-net-mvc-model-validation-using-data-annotations/
la source
Un autre point à noter est dans l' attribut MaxLength, vous ne pouvez fournir que la plage maximale requise et non une plage minimale requise. Dans StringLength, vous pouvez fournir les deux .
la source
Je l'ai résolu en ajoutant la ligne ci-dessous dans mon contexte:
D'une manière ou d'une autre, cela
[MaxLength]
n'a pas fonctionné pour moi.la source
Lors de l'utilisation de l'attribut pour restreindre la longueur d'entrée maximale du texte d'un formulaire sur une page Web, StringLength semble générer l'attribut html maxlength (au moins dans mon test avec MVC 5). Celui à choisir dépend alors de la manière dont vous souhaitez alerter l'utilisateur qu'il s'agit de la longueur maximale du texte. Avec l'attribut stringlength, l'utilisateur ne pourra tout simplement pas taper au-delà de la longueur autorisée. L'attribut maxlength n'ajoute pas cet attribut html, à la place il génère des attributs de validation de données, ce qui signifie que l'utilisateur peut taper au-delà de la longueur indiquée et que la prévention d'une saisie plus longue dépend de la validation en javascript lorsqu'il passe au champ suivant ou clique sur Soumettre (ou si javascript est désactivé, validation côté serveur). Dans ce cas, l'utilisateur peut être informé de la restriction par un message d'erreur.
la source