Używam sprawdzania poprawności danych w programie ASP.NET MVC 2. Ta nowa funkcja stanowi olbrzymią oszczędność czasu, ponieważ jestem teraz w stanie zdefiniować zarówno walidację po stronie klienta, jak i walidację po stronie serwera w jednym miejscu. Jednak podczas przeprowadzania szczegółowych testów zdałem sobie sprawę z tego, że łatwo jest omijać walidację po stronie serwera, jeśli polegam wyłącznie na sprawdzaniu poprawności danych. Na przykład, jeśli zdefiniowałem wymagane pole, przypisując właściwość atrybutem [Wymagane] i umieściłem pole tekstowe dla tego wymaganego pola w formularzu, użytkownik mógłby po prostu usunąć pole tekstowe z DOM (co można łatwo zrobić za pomocą Firebug) a teraz sprawdzanie adnotacji danych nie zostanie uruchomione na tej właściwości podczas ModelBinding wewnątrz kontrolera. Aby upewnić się, że "wymagane" sprawdzanie poprawności jest uruchamiane, mogę powtórzyć sprawdzanie poprawności po wystąpieniu zdarzenia ModelBinding, ale wtedy będę powtarzać logikę sprawdzania poprawności.ASP.NET MVC: czy poprawność adnotacji danych jest wystarczająca?
Jakie są zalecenia wszystkich osób w zakresie walidacji? Czy weryfikacja danych jest wystarczająca? Czy weryfikacja musi zostać powtórzona, aby zapewnić, że sprawdzanie poprawności zostanie uruchomione we wszystkich sytuacjach?
Follow-up komentarz: podstawie poniższych odpowiedzi, wydaje się, że nie mogę polegać na walidację modelu Binder i danych adnotacji w spokoju. Ponieważ dochodzimy do wniosku, że wymagana jest dodatkowa walidacja po stronie serwera, czy istnieje możliwość łatwego sprawdzenia poprawności mojej warstwy usług na podstawie definicji zdefiniowanej w Adnotacjach danych? Wygląda na to, że dzięki temu uzyskamy najlepsze z obu słów ... nie będziemy musieli powtarzać kodu walidacyjnego, ale nadal zapewniamy, że sprawdzanie poprawności zostanie wykonane, nawet jeśli moduł Binder go nie wyzwoli.
Zamierzam opublikować ten dodatkowy komentarz jako osobne pytanie, ponieważ stanowi ono inne pytanie niż pierwotne.
odpowiedź Koritnik za odpowiedzi na swoje kontynuacji zapytania. Przeprowadzam moją walidację podobną do odpowiedzi, którą wysłał. Ta sama definicja DataAnnotation może być używana zarówno do sprawdzania poprawności serwera, jak i klienta. –
Sprawdzanie poprawności danych jest poprawne, jeśli dostarczone atrybuty sprawdzania poprawności i sama ramka będą dla Ciebie odpowiednie. Zachowanie w Required zostało zmienione dla ASP.NET MVC 2 RTM ze względu na opinie społeczności, więc [Wymagane] działa teraz tak, jak można się spodziewać. Opcjonalnie, sprawdź: blokowanie sprawdzania poprawności (biblioteka korporacyjna), xVal, walidatory NHibernate (rzekomo nie ma zależności od NHibernate ORM). – miha
'" Zamierzam opublikować ten dodatkowy komentarz jako osobne pytanie, ponieważ stawia ono inne pytanie niż oryginalne. "" Link do tego nie byłby złym pomysłem, co? – Sinjai