나는 AccountsViewModel는 다음과 같이 정의 :FluentValidation을 사용하여 복잡한 모델을 검증하고 모델에 계속 액세스 할 수 있습니까?
[Validator(typeof(AccountsValidator))]
public class AccountsViewModel
{
public AccountsViewModel()
{
Accounts = new List<Account>();
Accounts.Add(new Account { AccountNumber = string.Empty }); //There must be at least one account
}
public List<Account> Accounts { get; set; }
}
그리고 난 다음 유창하게 검증 있습니다
public class AccountsValidator : AbstractValidator<AccountsViewModel>
{
public AccountsValidator()
{
//Validate that a single account number has been entered.
RuleFor(x => x.Accounts[0].AccountNumber)
.NotEmpty()
.WithMessage("Please enter an account number.")
.OverridePropertyName("Accounts[0].AccountNumber");
RuleFor(x => x.Accounts)
.SetCollectionValidator(new AccountValidator());
}
}
public class AccountValidator : AbstractValidator<Account>
{
public AccountValidator()
{
RuleFor(x => x.AccountNumber)
.Matches(@"^\d{9}a?[0-9X]$")
.WithMessage("Please enter a valid account number.");
//TODO: Validate that the account number entered is not a duplicate account
}
}
나는 그것이 Accounts
컬렉션 중복되는 경우 계좌 번호에 오류를 추가하고 싶습니다를 . 그러나 AccountValidator
클래스에서는 계정 컬렉션에 액세스 할 수 없습니다 (알고있는 한). 계정 번호가 중복되지 않도록 계정 컬렉션에 대한 액세스 권한을 얻으려면 어떻게 변경하고 다시 작성할 수 있습니까?
별로 좋지는 않지만 컬렉션을 AccountValidator 생성자에 매개 변수로 전달하여 로컬 필드로 유지할 수 있습니다. – ilmatte