2013-03-19 5 views
8

In un'applicazione ASP.NET MVC4 viene utilizzata FluentValidation per convalidare i nostri modelli. In certi casi vogliamo solo convalidare una proprietà quando un'altra proprietà ha un valore. Usiamo la parola chiave When per realizzare questo. Una semplice classe di convalida si presenta così:convalida fluida con il lato client

public class PersonValidator : AbstractValidator<Person> 
{ 
    public PersonValidator() 
    { 
     RuleFor(item => item.FirstName).NotEmpty(); 
     RuleFor(item => item.LastName).NotEmpty().When(item => !string.IsNullOrEmpty(item.FirstName)) 
    } 
} 

Vorremmo avere la validazione lato client per questo. Ho provato a creare un FluentValidationPropertyValidator personalizzato. Ma non riesco a trovare un modo per riprendere la parte della regola di convalida. Qualcuno può indicarmi la giusta direzione?

+2

dopo che alcune ricerche hanno scoperto che questo richiederebbe molto lavoro, maggiori informazioni: https://fluentvalidation.codeplex.com/discussions/229346 –

risposta

0

Alcune delle convalide in FluentValidation semplicemente non supportano la validazione lato client:

Da Documentazione (http://fluentvalidation.codeplex.com/wikipage?title=mvc&referringTitle=Documentation):

noti che FluentValidation funziona anche con lato client di ASP.NET MVC validazione, ma non tutte le regole sono supportate. Ad esempio, qualsiasi regola definita utilizzando una condizione (con Quando/Unless), i validatori personalizzati o le chiamate a Must non verranno eseguite sul lato client. I seguenti validatori sono supportate sul client:

* NotNull/notempty * Risultati (regex) * InclusiveBetween (range) * Carta di Credito * Email * equalTo (confronto di uguaglianza cross-proprietà) * Lunghezza