2013-06-17 12 views
5

Używam FluentValidation do sprawdzania poprawności po stronie serwera. Teraz miałem to przed wywołaniem funkcji walidacji musi:Wywołanie funkcji FluentValidation z wieloma parametrami

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

teraz, że działa, ponieważ jedynym parametrem, który validateProfile Wystarczy UserProfile. to wszystko jest dobre.

Mój problem jest teraz, że staram się mieć funkcję z dwoma parametrami potwierdzić funkcja danych.Następnie który próbuję użyć do sprawdzania wygląda jak poniżej:

bool IsValid(string promocode, IUserProfile userProfile) 

Teraz nie jestem pewien jak związać IsValid z FluentValidation. Jakieś pomysły?

Odpowiedz

10

Skąd pochodzi kod promocyjny? Metoda musi ma przeciążeń przyjmowanie FUNC FUNC i Func

Jeśli Promocode jest właściwością obiektu jest potwierdzone, że to będzie łatwe do przekazania coś

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

Dziękuję bardzo. Tak, kodode jest właściwością sprawdzanego obiektu. a także chciałem pokazać błąd jako błąd kodowania, więc wprowadziłem niewielką zmianę w kodzie, który napisałeś. Ale to, co wysyłasz, działa doskonale. tutaj jest mój zmieniony kod RuleFor (x => x.PromoCode) .Must ((o, promocode) => IsValid (kod promocyjny, o.UserProfile)); – TeaLeave