2010-06-10 15 views
9

Używam ASP.NET MVC z klasami Entity Framework POCO i framework FluentValidation. Działa dobrze, a sprawdzanie poprawności odbywa się tak, jak powinno (tak jakbym korzystał z DataAnnotations). Otrzymałem nawet walidację po stronie klienta. I jestem z tego całkiem zadowolony.Korzystanie z ViewModel w ASP.NET MVC z FluentValidation

Ponieważ jest to aplikacja testowa, którą piszę tylko po to, aby sprawdzić, czy mogę współpracować ze wszystkimi nowymi technologiami (i uczyć się ich po drodze), jestem teraz gotowy eksperymentować z użyciem ViewModels zamiast tylko przekazywać rzeczywisty model do widok. Planuję użyć czegoś takiego jak AutoMapper w mojej usłudze, aby wykonać odwzorowanie od modelu do ViewModel, ale najpierw mam pytanie.

Jak to wpłynie na moją walidację? Czy moje klasy sprawdzania poprawności (napisane przy użyciu FluentValidation) powinny być napisane na ViewModelu zamiast na Modelu? Czy to musi się zdarzyć w obu miejscach? Jedną z wielkich ofert dotyczących DataAnnotations (i FluentValidation) było to, że mógłbyś walidować w jednym miejscu, który działałby "wszędzie". I spełnia tę obietnicę (głównie), ale jeśli zacznę używać ViewModels, czy nie tracę tej umiejętności i muszę wrócić do sprawdzania poprawności w dwóch miejscach?

Czy tylko o tym myślę źle?

Odpowiedz

4

A może po prostu myślę o tym źle?

Prawdopodobnie;)

Jeśli dodać cały kod weryfikacyjny do ViewModels ty chcesz być tylko sprawdzanie ich zamiast swoich rzeczywistych modeli. Wszystko, co naprawdę się zmienia, to to, które obiekty mogą wprowadzić nieprawidłowy stan.

W tej chwili jestem szczęśliwy, gdy tylko ciasto sprawdza poprawność ViewModels, a następnie przekazuje te informacje do rzeczywistych modeli i warstw DAO. To, czy twoja domena może wprowadzić nieprawidłowy stan, jest kwestią sporną, ale jak na razie ta technika działa doskonale. Sprawdzanie poprawności w jednym miejscu i brak nieprawidłowych obiektów w moim magazynie pamięci trwałości.