ASP.NET MVC 3复杂类型验证

时间:2010-11-18 02:17:21

标签: asp.net-mvc asp.net-mvc-3 validation

我遇到需要验证孩子的情况,但前提是它存在。基本上用户可以输入银行账户或信用卡,我只想验证他们输入的账户。

以下是模特:

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

我的问题是尽管父属性验证为true,仍然会验证子节点的属性。有没有办法阻止孩子验证父母是否这样说?

1 个答案:

答案 0 :(得分:0)

为什么不制作属性PaymentMode,从PaymentMode派生Bank和CC,制作所需字段,并在UI中处理用户可以选择和输入的内容。

只是一个想法。