Jak sprawdzić poprawność każdego łańcucha na liście za pomocą Fluent Validation?
Mam model widoku MVC3 zdefiniowany jako:
<code>[Validator(typeof(AccountsValidator))] public class AccountViewModel { public List<string> Accounts { get; set; } } </code>
Z walidacją zdefiniowaną przy użyciu FluentValidation (v3.3.1.0) jako:
<code>public class AccountsValidator : AbstractValidator<AccountViewModel> { public AccountsValidator() { RuleFor(x => x.Accounts).SetCollectionValidator(new AccountValidator()); //This won't work } } </code>
A walidacja konta byłaby prawdopodobnie zdefiniowana:
<code>public class AccountValidator : AbstractValidator<string> { public OrderValidator() { RuleFor(x => x).NotNull(); //any other validation here } } </code>
Chciałbym, aby każde konto na liście zostało poddane walidacji zgodnie z opisem wdokumentacja. Jednak wezwanie doSetCollectionValidator
nie działa, ponieważ nie jest to opcja podczas korzystania z aList<string>
chociaż opcja byłaby tam, gdyby została zdefiniowana jakoList<Account>
. Czy czegoś mi brakuje? Mógłbym zmienić mój model do użyciaList<Account>
a następnie zdefiniuj klasę konta, ale tak naprawdę nie chcę zmieniać mojego modelu, aby pasował do walidacji.
Dla odniesienia jest to widok, którego używam:
<code>@model MvcApplication9.Models.AccountViewModel @using (Html.BeginForm()) { @*The first account number is a required field.*@ <li>Account number* @Html.EditorFor(m => m.Accounts[0].Account) @Html.ValidationMessageFor(m => m.Accounts[0].Account)</li> for (int i = 1; i < Model.Accounts.Count; i++) { <li>Account number @Html.EditorFor(m => m.Accounts[i].Account) @Html.ValidationMessageFor(m => m.Accounts[i].Account)</li> } <input type="submit" value="Add more..." name="add"/> <input type="submit" value="Continue" name="next"/> } </code>