Ho la seguente definizione ViewModelViewModel convalida per un elenco
public class AccessRequestViewModel
{
public Request Request { get; private set; }
public SelectList Buildings { get; private set; }
public List<Person> Persons { get; private set; }
}
Così nella mia richiesta ci deve essere almeno 1 persona per una richiesta di accesso. Quale approccio potresti usare per convalidare? Non voglio che questa convalida avvenga nel mio controller, cosa che sarebbe semplice da fare. L'unica scelta è un attributo di convalida personalizzato?
Edit: Attualmente l'esecuzione di questa convalida con FluentValidation (bella libreria!)
RuleFor(vm => vm.Persons)
.Must((vm, person) => person.Count > 0)
.WithMessage("At least one person is required");
Sembra che ho bisogno usare il sovraccarico Must() per utilizzare person.Count, vedere la mia modifica e fammi sapere se hai una versione più amichevole :) – ryan
@ryan, infatti ci sono due overload di questo metodo come [mostrato nella documentazione] (http: // fluentvalidation. codeplex.com/wikipage?title=Validators&referringTitle=Documentation&ANCHOR#Predicate). Quindi la mia versione è più amichevole. Non preoccuparti se Visual Studio lo sottolinea come errore. Dovrebbe funzionare se si tenta di compilare. È solo che VS Intellisense non è abbastanza avanzato per capirlo :-) Quindi 'RuleFor (x => x.Persons) .Must (x => x.Count> 0) .WithMessage (" Almeno una persona è richiesta ") ; 'compilerà e funzionerà correttamente. –
Strano, ora non sta sottolineando. Grazie! – ryan