Nous utilisons xVal et le DataAnnotationsValidationRunner
standard décrit here pour recueillir des erreurs de validation de nos objets de domaine et des modèles d'affichage dans ASP.NET MVC. Je voudrais trouver un moyen d'identifier ce courtier de validation lorsque deux propriétés ne correspondent pas à l'aide de DataAnnotations personnalisées.Comment puis-je utiliser un ValidationAttribute sur mesure pour assurer deux propriétés correspondent?
En ce moment je suis forcé en faire en dehors du coureur, de cette façon:
if (!(model.FieldOne == model.FieldTwo))
errors.Add(new ErrorInfo("FieldTwo", "FieldOne must match FieldTwo", model.FieldTwo));
Ma question est la suivante: cela peut être fait en utilisant les attributs de validation au niveau de la propriété, ou suis-je forcé en utilisant la classe attributs -Level (dans ce cas, je serais amené à modifier le coureur ... et ma question de suivi serait la meilleure façon de les récupérer dans ce cas).
Merci!
MISE À JOUR: J'ai finalement trouvé comment écrire la requête d'objet pour implémenter la suggestion dans la réponse sélectionnée; Je concat les résultats de cette requête avec les résultats du coureur de validation standard, si quelqu'un était curieux. Notez que j'ai changé le TypeId pour être la propriété de champ de confirmation.
var classErrorQuery =
from attribute in
instance.GetType().GetCustomAttributes(typeof (ValidationAttribute), false).Cast
<ValidationAttribute>()
where !attribute.IsValid(instance)
select new ErrorInfo(attribute.TypeId.ToString(), attribute.FormatErrorMessage(string.Empty), instance);
double possible [Écrire un attribut CompareTo DataAnnotation] (http://stackoverflow.com/questions/1607832/writing-a-compareto-dataannotation-attribute) – Sheridan