Je n'arrive pas à faire fonctionner mes notifications de données personnalisées. J'essaie d'ajouter un attribut de validation qui confirme que le nom de groupe d'utilisateurs d'un client (CustomerID) est unique. Le IsValid devrait renvoyer false si le "count> 0".Validation personnalisée avec des annotations de données
Comment puis-je résoudre ce problème pour que cela fonctionne. GetUsergroups() renvoie IQueryable.
EDIT:
[MetadataType(typeof(UsergroupMetaData))]
public partial class Usergroup { }
public class UsergroupMetaData
{
public object CustomerID { get; set; }
[Required(ErrorMessageResourceType = typeof(Resources), ErrorMessageResourceName = "UsergroupNameRequired")]
[UniqueUsergroupName(ErrorMessageResourceType= typeof(Resources), ErrorMessageResourceName = "UsergroupNameExists")]
public object UsergroupName { get; set; }
}
public class UniqueUsergroupName : ValidationAttribute
{
UsergroupRepository _rep = new UsergroupRepository();
public override bool IsValid(object value, int customerID)
{
int usergroups = _rep.GetUsergroups().ByCustomerID(customerID).ByUsergroupName(value.ToString()).Count();
return usergroups >0;
}
}
Comment puis-je passer le courant CustomerID comme paramètre?
/M
Je ne vois pas comment je devrais l'appliquer dans mon scénario. Comme il utilise la base de données et tout. Surtout si CustomerID serait nullable et non requis. –
J'ai ajouté un code écrit à la volée pour expliquer comment je pense que l'idée pourrait être utilisée dans votre situation. Vérifiez-le et dites-moi si cela fonctionne pour vous. La capture principale que je vois dans la publication est de faire en sorte que l'attribut de validation fonctionne pour toute la classe et pas seulement pour une certaine propriété. Dites-moi comment ça se passe. – Meligy