0

にだから私は、次のように私のメタデータ内のいくつかの検証を持っている:RIA Servicesの検証順序

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; } 
    } 

私はあなたがここに見ることができるようにNumberプロパティを検証するためのいくつかのコードを持っているが、私はいくつかの他の必要なプロパティを必要とします最初に発火する属性の数。

どうすれば実現できますか?

答えて

0

私が知る限り、この質問に対する答えはいいえ、プロパティレベルの検証では順序を教える方法がありません。

と言っていますが、すべてRequiredプロパティは他より前に検証されます。

私が望んでいたのは、クラスのタイプバリデーターを追加することでした。型バリデーターは常にプロパティーバリデータの後に起動されます。これは私が必要としていたものです。

は、ここに私のコードです:

[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

あなたは、nameとcountryCodeが完了するまでPCNValidatorを成功させることができます。その条件が満たされたら、Numberで残りの検証チェックを実行できます。すばらしい解決策ではありませんが、注文要件を満たすことができます。

+0

私はそれをどのように行うのでしょうか? Numberが検証されると、もう一度検証されません...検証を強制することができますか? – sebagomez

関連する問題