2013-06-17 14 views
5

Sto utilizzando FluentValidation per la validazione lato server. Ora ho avuto chiamare una funzione prima con la convalida deve:Avere FluentValidation chiama una funzione con più parametri

RuleFor(x => x.UserProfile).Must(ValidateProfile).WithMessage("We are sorry, you have already logged on " + DateTime.Now + ". Please come again tomorrow."); 

Ora, che funziona perché l'unico parametro che prende validateProfile è ProfiloUtente. è tutto buono.

Il mio problema ora è che sto cercando di avere una funzione con due parametri convalidare la funzione di data.The che sto cercando di utilizzare per la convalida si presenta come di seguito:

bool IsValid(string promocode, IUserProfile userProfile) 

Ora, io non sono sicuro come associare IsValid a una validaValidation. Qualche idea?

risposta

10

Da dove proviene il promocode? Il metodo deve ha sovraccarichi accettare Func, Func, e Func

Se Promocode è una proprietà dell'oggetto in corso di validazione, che sarebbe stato facile passare qualcosa come

.RuleFor(x => x.UserProfile).Must((o, userProfile) => { return IsValid(o.promoCode, userProfile); }) 
+0

grazie mille. Sì, promocode è una proprietà dell'oggetto che viene convalidata. e volevo anche mostrare l'errore come errore del promocode, così ho apportato una piccola modifica al codice che hai postato. Ma ciò che mandiamo funziona in modo sostanziale. ecco il mio codice modificato RuleFor (x => x.PromoCode) .Must ((o, promocode) => IsValid (promocode, o.UserProfile)); – TeaLeave

Problemi correlati