0
我有一个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 2012-06-04 09:54:30