Проверка сложного типа ASP.NET MVC 3 - PullRequest
1 голос
/ 18 ноября 2010

У меня есть ситуация, когда мне нужно проверить ребенка, но только если он существует.По сути, пользователь может ввести либо банковский счет, либо кредитную карту, и я хочу подтвердить только тот, который они вводят.

Вот модели:

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 голосов
/ 18 ноября 2010

Почему бы не сделать свойство PaymentMode, вывести как Bank, так и CC из PaymentMode, сделать поле обязательным и обработать его в пользовательском интерфейсе относительно того, что пользователь может выбрать и ввести.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...