2010-02-13 14 views
8

Kullanıcı modeline bağlı olarak görünüm modelimi dinamik olarak oluşturan bir asp.net mvc 2 uygulaması oluşturuyorum. Basitçe söylemek gerekirse, kullanıcı kendi Görünümünde görmek istediği alanları seçebilir.ASP.NET MVC 2 Dinamik olarak oluşturulmuş bir modeldeki veri ek açıklamaları

Templated yardımcıların, model özelliklerine ve özelliklerine (veri açıklamalarına) yoğun bir şekilde bel bağladığından, çalışma sırasında görünüm modeline niteliklerini bir şekilde eklemem gerekir. Bunun basit bir görev olmadığını söylemeye gerek yok.

Peki, bu senaryoda ne yapmamı önerirsiniz? Nitelikleri statik olarak ekleyemiyorum, bu yüzden devam etmeli ve çok fazla iş olsa bile dinamik olarak eklemeyi denemeli miyim yoksa farklı bir yaklaşım kullanmaya çalışmalı mıyım?

Şimdiden teşekkürler! (Eğer doğru anlamak) Felipe

cevap

3

Özel bir model bağlayıcı, yalnızca ciltleme bölümünde size yardımcı olur. ASP.NET MVC'nin templated yardımcılarına veya diğer özelliklerine yardımcı olmaz.

ben ModelMetadataProvider devralan ve ModelMetadataProviders kullanarak Global.asax içinde sağlayıcı kaydederek bunun yerine özel bir meta sağlayıcı not etmenizi öneririz. Özel bir meta veri sağlayıcısı, meta verilerini istediği her yerden alabilir: CLR öznitelikleri, XML dosyası, veritabanı veya rasgele sayı üreteci. Yerleşik Veri Ek Açıklamaları sağlayıcısı, CLR öznitelikleri kullanır.

Bir sağlayıcı nasıl uygulanacağına ilişkin bir örnek görmek için yerleşik Veri Notları meta veri sağlayıcısının kaynak koduna göz atmak isteyebilirsiniz. ASP.NET MVC 2 RC 2 kaynak kodunu the CodePlex site'dan indirebilirsiniz. MVC Futures projesinde de bir uygulama olabilir, ancak emin değilim.

+0

Çok teşekkürler! –

0

overkill gibi geliyor - o anında modelleri ortaya çıkarmaktadır. Modellere sahip olmanın temel faydasını kullanmıyorsunuz; zaman kontrollerini derler.

Görev için özel nesneleri (örneğin, UserFormFields Sınıfları Listesi ve benzeri olan bir UserForm sınıfı) el altında kullanmayı ve bunları anında oluşturmaya çalışmam gerekir.

Düzenleme: Ne düşündüren am değil kullanım nitelik bazlı doğrulama etmektir ve akılda doğrulama ile model tasarımı. Aşağıdaki gibi bir tasarım benim açımdan daha iyi açıklayabilir: dinamik doğrulama uygulayan bir özel görünüm modeli cilt gerekir gibi

interface IUserValidation 
{ 
    bool IsValid(); 
} 

class RequiredUserValidation : IUserValidation 
{ 
    public bool IsValid() 
    { 
     // .... 
    } 
} 

class UserFormField 
{ 
    List<IUserValidation> _validations; 

    public IEnumerable<ValidationResult> Validate() 
    { 
     // ... 
    } 
} 
+0

Neredeyse modelimin nasıl göründüğü budur. Veri içeren alanlardan oluşan bir koleksiyon. Sorun şu ki, derleme zamanında bu alanlar hakkında hiçbir bilgim yok. Veritabanını sorgulamalı ve alanlardan bilgi almalı ve onların özniteliklerini doldurmalıyım –

İlgili konular