Odpowiedz

6

Późne zgłoszenie do dyskusji, ponieważ nie chcę zaczynać nowego pytania. Skąd pochodzę, to określenie najlepszej praktyki do zastosowania w średniej wielkości projekcie ASP.NET MVC.

Pozwól mi podsumować nasze możliwości: -

1) IDataErrorInfo jest proste do wdrożenia. Wszystko, czego potrzebujesz, to wyprowadzić IDataErrorInfo w klasie Model. Połów jest taki, że pozwalasz, aby twój model wiązał się z egzekwowaniem reguł biznesowych. Reguły biznesowe powinny być egzekwowane przez model. Drugi haczyk dla IDataErrorInfo (i podobnie dla DataAnnotations) jest to, że (parafrazując od Steven Sanderson's book nie może zgłosić kilka błędów związanych z pojedynczej nieruchomości lub kilka błędów związanych z whle modelu obiektowego.

2) DataAnnotation do mnie, jest jak sprawdzanie schematu (sprawdzanie poprawności). To jest pierwsza kontrola, którą powinna wykonać twoja aplikacja. Jednak (IMHO) nie nadaje się do wdrażania reguł biznesowych.

3) Zaimplementuj własnego ModelBindera. Chociaż można to zrobić, ale poważnie mówiąc, użycie ModelBinder polega na analizie i powiązaniu danych z modelem, a nie na wykonywaniu skomplikowanych sprawdzeń i sprawdzaniu reguł biznesowych. Zostawiłbym sprawdzanie reguł biznesowych, które będą implementowane w warstwie Model/Domain.

4) Rzuć własną - sprawdzanie poprawności za pomocą warstwy usługi (zobacz this. Przedstawiony przykład ma swoją zaletę oddzielenia od kontrolera i stanu modelu przy użyciu klasy interfejsu .Inną opcją jest wyrzucenie odpowiedniego wyjątku z warstwy modelu Ta ostatnia opcja jest przydatna podczas implementowania warstwy usługi w oddzielnej aplikacji (np. Aplikacji WCF)

Co sądzisz: w przypadku projektu średniego i dużego, z której z powyższych opcji skorzystałeś (lub zamierzam adoptować) i dlaczego?

Pozdrawiam

+0

W punkcie 1 wierzę, że INotifyDataErrorInfo będzie obsługiwane w .Net 4.5 i będzie obsługiwać wiele błędów dla jednej właściwości. –

5

Wygląda na to, że DataAnnotations otrzymują oficjalne wsparcie w MVC 2.0. Scott Guthrie opublikował numer good article dotyczący sprawdzania poprawności modelu w wersji 2.0 przy użyciu funkcji DataAnnotations. Biorąc pod uwagę, że zespół wydaje się zmierzać w tym kierunku, można uznać, że głos na jego korzyść.

4

DataAnnotations są łatwiejsze do wdrożenia i uzyskania bezpośredniego wsparcia w MVC 2.0.

Jednak, IDataErrorInfo pozwala na bardziej złożone sprawdzanie poprawności (np. Sprawdzanie poprawności, które spawnuje wiele właściwości itd.).

Dwa mogą być mieszane i używane razem. Nic nie powstrzyma cię od wdrożenia obu technik.

+0

To jest również możliwe z ComponentModel.DataAnnotations za pomocą interfejsu IValidatableObject. Za pomocą tego interfejsu można również przeprowadzić walidację, która spawnuje wiele właściwości. –

Powiązane problemy