web-dev-qa-db-fra.com

Quels paramètres l'attribut stringlength errormessage prend-il?

Dans le modèle MVC4, l'un des attributs d'annotation de données utilisé est stringlength.

Par exemple:

[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]

Quels paramètres {0}, {1}, {2} (plus?) Sont légaux?

Edit: Pour être plus précis, je peux voir à partir des exemples et des essais et erreurs quelles sont les possibilités, mais j'aimerais voir une documentation complète.

Je ne trouve rien à ce sujet dans la documentation StringLengthAttribute .

31
Anders E. Andersen

L'index {0} est le nom d'affichage de la propriété, {1} est la MaximumLength, {2} est la MinimumLength. Donc, votre message d'erreur sera formate en tant que "The Foo must be at least 6 characters long."

44
Sergey Berezovskiy

Je n'ai pas vu de documentation non plus, mais la méthode FormatErrorMessage pour la StringLengthAttribute ressemble à ceci:

public override string FormatErrorMessage(string name)
{
    EnsureLegalLengths();
    string format = ((this.MinimumLength != 0) && !base.CustomErrorMessageSet) ? DataAnnotationsResources.StringLengthAttribute_ValidationErrorIncludingMinimum : base.ErrorMessageString;
    return String.Format(CultureInfo.CurrentCulture, format, new object[] { name, MaximumLength, MinimumLength });
}
12
Moose Factory

Une recherche Google plus longue que prévue m'a amené à aborder ce vieux sujet avant que je puisse commencer à obtenir des pistes solides. Je vais donc mettre ceci ici et j'espère que cela aidera tout le monde dans la même situation:

L'inspection du code pour StringLengthAttribute que MS a placé sur GitHub confirme la logique résidant dans la méthode FormatErrorMessage: 

// it's ok to pass in the minLength even for the error message without a {2} param since String.Format will just
// ignore extra arguments
return String.Format(CultureInfo.CurrentCulture, errorMessage, name, this.MaximumLength, this.MinimumLength);

Ainsi, "0", "1" et "2" correspondent à "nom" (de la propriété), "MaximumLength" et "MinimumLength" en conséquence.

Je parie que la même méthode peut être appliquée à tous les autres attributs de validation pour vérifier leurs paramètres de formatage en conséquence; Je n'ai pas pu trouver d'autre documentation pour cette information autrement.

0
Bo Ngoh