0

J'ai donc quelques validations dans mes métadonnées comme ce qui suit:RIA Services de commande de validation

internal sealed class Metadata 
    { 
     [Key] 
     [ReadOnly(true)] 
     public int Id { get; set; } 

     [Required] 
     public string Name { get; set; } 

     [Required] 
     public string CountryCode { get; set; } 

     [CustomValidation(typeof(PCNValidator), "SetNumber")] 
     public string Number { get; set; } 
    } 

J'ai un code pour valider la propriété Number comme vous pouvez le voir ici, mais je dois les autres propriétés requises de certains des attributs à tirer en premier.

Comment puis-je y parvenir?

Répondre

0

Pour autant que je pouvais trouver, la réponse à cette question est non, il n'y a aucun moyen de dire un ordre de validation au niveau de la propriété.

Cela dit, chaque Required propriété est validée avant les autres.

Ce que je l'ai fait pour achive ce que je voulais ajoutais un type validateur pour la classe. Les validateurs de type sont toujours déclenchés après les validateurs de propriété, ce qui est exactement ce dont j'avais besoin.

voici mon code:

[MetadataType(typeof(PCN.Metadata))] 
[CustomValidation(typeof(PCNValidator), "ValidateInsert")] 
public partial class PCN : IValidate 
{ 
    internal sealed class Metadata 
    { 
     [Key] 
     [ReadOnly(true)] 
     public int Id { get; set; } 

     [Required(AllowEmptyStrings=false)] 
     public string Name { get; set; } 

     [Required] 
     public string CountryCode { get; set; } 
    } 
} 
0

Vous pouvez faire votre succès PCNValidator de retour jusqu'à ce que le nom et countryCode ont été complétées. Une fois cette condition remplie, vous pouvez effectuer les contrôles de validation restants sur Number. Ce n'est pas une solution merveilleuse, mais cela permet de répondre à vos exigences de commande.

+0

comment pourrais-je faire cela? Une fois le numéro validé, il ne sera plus validé ... puis-je forcer la validation? – sebagomez