2010-05-07 23 views
6

Domain Driven Design'ı öğrenmeye çalışıyorum ve son zamanlarda birçok kullanıcının belirli bir görünümde görüntülemek istediğiniz tüm değerleri depolayan görünümleriniz için bir ViewModels oluşturmayı desteklediğini okudum.ViewModel nerede ve nasıl doğrulanır ve eşleştirilir?

Sorumu form doğrulaması nasıl yapmalıyım? Her görünüm için ayrı doğrulama sınıfları oluşturmalı mıyım yoksa bunları birlikte gruplamalı mıyım? Bunun kodda neye benzeyeceği konusunda da kafam karıştı. Şu anda doğrulama düşünmek ve ViewModels şeylerin şemaya nasıl uyum

budur:

View (bazı kullanıcı girişi) -> Denetleyici -> (ViewModel arasında) FormValidation -> (Eğer ViewModel geçerli haritası için Domain Modeli) -> Domain Layer Service -> Altyapı

Teşekkürler!

P.S. Asp.net MVC'yi C#

cevap

0

Form örneklememi ViewModel'e yerleştirmeyi denedim ve karmaşık iş doğrulaması için bir hizmet katmanı kullanıyorum.

Bu aslında gerçek iyi çalışıyor ve kod çok daha kolay okunur ve bu ortak bir sorudur

0

ile birlikte kullanın. Doğrulama kurallarınızı etki alanı modelinize koymanızı öneririz. Bu en kolay ve yinelenen yoldur (System.ComponentModel.DataAnnotations kullanın, örneğin - MVC 2 varsayılan model bağlayıcı, kutunun dışında destekler).
Karmaşık ve büyük geniş etki alanı modeliniz varsa ve aynı adlara sahip olan eşleme özellikleriyle takılmayacaksanız, bu tür işleri yapmak için harika bir araç olan AutoMapper kullanmayı deneyin.

0

Görünüm modelini sunum katmanında doğrulayın. Yalnızca sunuyla ilgili doğrulamayı doğrulamanız gerektiğini unutmayın (tarih doğru biçimde, ad! = "", Vb.).

Asp.net Mvc, genellikle temel doğrulama için yeterli olan bazı in-built validation support sahiptir. Etki alanı tarafından yönetilen tasarım uygulanırken zor olan alan etki alanı doğrulamasıdır. Karmaşık kurallar, depolarda bağımlılıklar ve domain model dumb'u çok zor yapmadan 'doğrulama çalıştırması' yapabilecek benzer şeyler olabilir.

Bu nedenle, etki alanı nesnesinin invalid durumuna girmesine izin vermemek ve gerçekleşmesi durumunda istisna atmak iyi bir fikir gibi görünüyor.


Daha mekanik etki modeline görünüm modeli eşlemek çalışmayın - bu yaklaşım bağlantı artırır, Alan adı modelinin kapsülleme ve aşağıya doğru dilsiz bozabilir.

0

korumak ve her zaman bir doğru cevabı yoktur biri. Derick Bailey tarafından this post göz atın. Bu soru hakkında iyi bir tartışma ve konuyla ilgili diğer bazı büyük yazılara birkaç bağlantı var.