2010-12-15 19 views
11

Veri modeli sınıflarını veri açıklama özellikleriyle birlikte dekore etmek için kullanıyorum, ancak içimdeki bende buradaki görüntü biçimi gibi tamamen sunum nitelikleri dahil olmak üzere hafifçe batar. Bununla birlikte, validasyon merkezleme niteliklerini burada tutmaktan oldukça memnunum. Veri modelinde tüm ek açıklamaları vb. Tutmaya devam etmem için iyi bir sebep, görüntüleme modelimin veri modeli sınıflarını, ör. Benim görünüm modelindeki benim ViewModelBase.DetailItem<TEntity> özellik benim veri modelindeki bir varlık sınıfı için bir referanstır. Sunumsal açıklamaları görünüm modeline taşımak istemiş olsaydım, tasarım modelimdeki veri model özelliklerini çoğalttığım tasarım modelini tamamen revize etmem ve veri modeli nesnelerini temel alarak görünüm model nesnelerini doldurmak için bir nesne eşleme aracı kullanmam gerekirdi.Veri ek açıklamaları Modelde mi yoksa Görünüm Modelinde mi?

Veri ek açıklamalarımı nerede yapmalıyım?

Sadece BTW, bu benim taslak ViewModelBase neye benzediği:

bu görünümden aldığı miktardır çünkü Doğrulama en az görünümü modeline yapılmalıdır
public class ViewModelBase<T> 
{ 
    public virtual string PageTitle { get; set; } 
    public virtual string ViewHeading { get; set; } 

    public virtual ViewMode ViewMode { get; set; } 
    public virtual IEnumerable<T> ItemList { get; set; } 
    public virtual T DetailItem { get; set; } 
} 
+0

Ayrıca aşağıdakilere göz atın: http://stackoverflow.com/questions/3338919/mvc-validation-using-data-annotations-model-classes-or-view-model-classes – DarrellNorton

cevap

7

Aynı endişeyi DRY ilke ve geçerliliğiyle paylaşıyorum, bu nedenle de çoğu doğrulama modelini modelde tutmayı tercih ediyorum. Ama neden biri ya da diğeri olmak zorunda? Model Doğrulama, modele aittir, ancak, görünüm modeline ait belirli görünüme özgü doğrulamalar vardır.

Belirtilen, veri ek açıklamaları sadece şudur: veri etrafındaki ek açıklamalar. Doğru doğrulama mantığı değil. Doğrulama mantığı, veri ek açıklamalarına tamamen farklı bir kavramdır (Gerekli bir öznitelik, yalnızca doğrulamanın bir yönüdür). Gerçek validasyonun bir MVVM uygulamasında yer almasını zor buluyorum çünkü bazı doğrulama sadece gerekenden değil, bağlam gerektiriyor.

Kısa yanıt: Modelinizde bulunuyorsa, görünümünüzün görünümünde toplanır. Eğer görüşe özel bir gereksinim varsa, viewmodel gerekirse ek gereksinimleri karşılayabilir.

+0

Hey @William, uzun zamandır okuma yok :-) Doğrulama hakkında yaptığınız ifadeyi, görüntü modülleriyle birleştirildiğinden çok beğendim, ancak toplama türü görünüm modellerine fazladan doğrulama eklerken bazı engellerim var. Bu gece daha sonra korkak bir şeyle karşılaşırsam göreceğim. – ProfK

+0

Belki de, görüntünün modelleri, karar vermeyi kolaylaştırmak için modellerden yeterince uzak değiller (ya da tersine, görüşlere yeterince yakın değiller). Yine de doğrulama işleminin görüşlere özgü olmadığını düşünüyorum. İçerik dahil olabilir (örneğin, bir hastane sisteminde bir isim gereklidir. Henüz bir ismin uygulanmadığı yeni doğanlar hariç), ancak doğrulama mantığı ve muhakeme sadece belirli bir görünüme nadiren uygulanabilir. – WilliamB

+0

Seni kimin seçtiğini merak ediyorum. Bana sorarsan gerçekten aramazsın. – ProfK

11

. Ayrıca doğrulama, her zaman belirli bir görüş bağlamında gerçekleştirilir. Böylece, iki farklı görünüme karşılık gelen iki farklı görünüm modeline sahip olabilirsiniz, ancak tek bir model sınıfına eşlenmiş olabilirsiniz ve doğrulama, görüşe bağlı olarak farklı olabileceğinden, bu doğrulama görünüm modelinde gerçekleştirilmelidir. Modelde doğrulama gerçekleştirdiyseniz, iki durum arasında ayrım yapmak için zor zamanınız olacaktır, çünkü ilk görünümde bir özelliğin gerekli olduğu ancak ikinci görünümde gerekli olmayan bir durumunuz olabilir. Dolayısıyla, doğrulama işlemini gerçekleştirmek için veri ek açıklamaları kullanıyorsanız, görünüm modelinizi bunlarla birlikte dekore etmeniz gerekir.

+0

İki farklı doğrulama hakkında iyi bir nokta, ancak Her kullanım durumunun farklı bir görünüm ve görünüm modeli tarafından karşılanacağı farklı kullanım durumlarına hitap etmek için iş mantığıyla tam bir alan modelinden daha fazla bir DTO modelini göz önünde bulundurmaktadır. – ProfK

İlgili konular