Mam problem z FluentValidation, w którym chcę wyświetlić jedną wiadomość niezależnie od błędu sprawdzania poprawności w danym łańcuchu. Na przykład zdefiniowałem łańcuch sprawdzania poprawności dla jednej usługi poniżej. Spodziewam się, że łańcuch zostanie poddany ewaluacji, a wszelkie awarie spowodują, że komunikat zdefiniowany w poniższym zgłoszeniu WithMessage()
. Wydaje się jednak, że jest to zwarcie i wyświetlany jest tylko domyślny komunikat błędu FluentValidation dotyczący pierwszego napotkanego błędu. Zobacz poniższy kod:Jedna wiadomość dla łańcucha reguł?
RuleFor(s => s.ProposalDetail.AgeMin).NotNull()
.GreaterThanOrEqualTo(1)
.LessThanOrEqualTo(99)
.WithMessage("Minimum Age entry is required and must range from 1 to 99 years.");
Co się dzieje jest to, że nieruchomość AgeMin jest zerowy, więc pierwsza NotNull()
check się niepowodzeniem i wiadomość walidacji czyta „«Wniosek Detail Wiek Min.»Nie może być puste.” Szczegóły oferty to nazwa modelu widoku z otoczeniem. Próbowałem ustawić ustawienie CascadeMode dla całego walidatora na CascadeMode.Continue, ale nie ma ono żadnego efektu.
Jak mogę wykonać jedną wiadomość dla jednego łańcucha sprawdzania poprawności właściwości?
'W powyższym kodzie zwracana jest domyślna wiadomość sprawdzania poprawności, zamiast cus tom wiadomość na końcu "gdzie jest zadeklarowana domyślna wiadomość ...? czy możesz opublikować cały odpowiedni kod. Czy sprawdziłeś także [fluentwalność dla .NET Documentation/Exxples // Usluga Acididation.codeplex.com/wikipage?title=CreatingAValidator) – MethodMan
Tak, przetrząsnąłem dokumentację i pozwoliłem ' t znalazł podobny przykład. Wyobrażam sobie, że muszę użyć jednej reguły za pomocą 'Must()', aby hermetyzować wszystkie reguły, aby osiągnąć to, co próbuję zrobić. Myślałem, że to prosty przypadek. Domyślny komunikat FluentValidation zwraca "Szczegóły oferty. Age Min "nie może być pusty", ponieważ 'NotNull()' jest pierwszym wywołaniem w łańcuchu. Próbowałem ustawić 'CascadeMode = CascadeMode.Continue' dla walidatora, który nie miał żadnego efektu. – TimeBomb006
Podaj [mcve], która pokazuje Twój problem. Musi to być kod kompilowany, który możemy uruchomić. – Enigmativity