Pour créer une annotation de données du programme de validation procédez comme guide:
- Votre classe doit hériter de la
System.ComponentModel.DataAnnotations.ValidationAttribute
classe.
- Remplacer
bool IsValid(object value)
méthode et de mettre en œuvre une logique de validation à l'intérieur.
C'est tout.
Mise en garde IMPORTANTE
Parfois, les développeurs de vérifier que la valeur n'est pas null/vide et renvoie la valeur false. C'est généralement un comportement incorrect, parce que c'est sur Required
du programme de validation pour vérifier ce qui signifie que votre validateurs personnalisés ne doit valider les données non nulles mais qui reviennent true
dans le cas contraire (voir l'exemple). Cela permettra de les rendre utilisables sur obligatoire (obligatoire) et non des champs obligatoires.
Exemple
public class StringLengthRangeAttribute : ValidationAttribute
{
public int Minimum { get; set; }
public int Maximum { get; set; }
public StringLengthRangeAttribute()
{
this.Minimum = 0;
this.Maximum = int.MaxValue;
}
public override bool IsValid(object value)
{
string strValue = value as string;
if (!string.IsNullOrEmpty(strValue))
{
int len = strValue.Length;
return len >= this.Minimum && len <= this.Maximum;
}
return true;
}
}
Toutes les propriétés peuvent être définies dans l'attribut que vous souhaitez définir.
Quelques exemples:
[Required]
[StringLengthRange(Minimum = 10, ErrorMessage = "Must be >10 characters.")]
[StringLengthRange(Maximum = 20)]
[Required]
[StringLengthRange(Minimum = 10, Maximum = 20)]
Lorsqu'une propriété n'est pas défini, sa valeur est définie dans le constructeur, il a toujours une valeur. Ci-dessus des exemples d'utilisation j'ai volontairement ajouté l' Required
validateur ainsi, il est donc en synchronisation avec la prudence que j'ai écrit.
Important
Donc, ce validateur va encore travailler sur votre modèle de valeur qui n'est pas obligatoire, mais quand il est présent, il valide (pensez à un champ de texte dans un formulaire web, ce n'est pas obligatoire, mais si un utilisateur entre une valeur, il doit être valide).