次のように定義された AccountsViewModel があります。
[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
クラスでは、アカウント コレクションにアクセスできません (私が知る限り)。アカウント番号が重複していないことを確認できるように、アカウント コレクションにアクセスできるようにこれを変更または書き換えるにはどうすればよいですか?