2010-11-18 15 views
1

私は子を検証する必要がある状況がありますが、存在する場合のみです。基本的に、ユーザーは銀行口座またはクレジットカードのいずれかを入力することができ、入力したものの有効性を確認したいだけです。ここでASP.NET MVC 3複合型検証

は、モデルは以下のとおりです。

public class AccountViewModel 
{   
    [Required] 
    public bool isBankAccount { get; set; } 

    [RequiredIf("isBankAccount")] 
    public BankAccount BankAccount { get; set; } 

    [RequiredIf("isBankAccount", 
     IfNot = true)] 
    public CreditCard CreditCard { get; set; } 
} 

public class CreditCard 
{ 
    [Required] 
    [CreditCard] 
    public string CreditCardNumber { get; set; } 

    [Required] 
    [Range(1, 12)] 
    public int? ExpiryMonth { get; set; } 

    [Required] 
    [Range(2000, 3000)] 
    public int? ExpiryYear { get; set; } 

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

public class BankAccount 
{ 
    [Required] 
    public string BSB { get; set; } 

    [Required] 
    [StringLength(10, 
     MinimumLength = 3)] 
    [NumbersOnly] 
    public string AccountNumber { get; set; } 

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

私の問題は、子どもの属性は、まだ真の検証親属性にもかかわらず、検証されていることです。親がそう言っている場合、子どもが検証するのを止める方法はありますか?

+1

[データアノテーションでの依存プロパティの検証](http://stackoverflow.com/questions/2280539/custom-model-validation-of-dependent-properties-using-data-annotations)をご覧ください。 –

答えて

0

プロパティをPaymentModeにして、PaymentModeからBankとCCの両方を派生させ、必要なフィールドを作成し、ユーザーが選択して入力できるUIについてUIで処理するのはなぜでしょうか。

単なる考えです。