2011-11-18 10 views
5

Merhaba, bir MVC uygulaması ile ben kullanıyorum.DI, denetleyiciler için çalışıyor, ancak modeli göremiyor

Denetleyicileri için çalışmayı başarabildiğimden doğru şekilde ayarladığımdan eminim.

public class SettingController : Controller 
    { 
     private readonly IUnitOfWork _unitOfWork; 

     public SettingController(IUnitOfWork unitOfWork) 
     { 
      _unitOfWork = unitOfWork; 
     } 

Ondan sonra görünümü örneği:

public class GstRateController : Controller 
    { 
     private readonly IUnitOfWork _unitOfWork; 

     public GstRateController(IUnitOfWork unitOfWork) 
     { 
      _unitOfWork = unitOfWork; 
     } 
... 

Sonra ben o çalıştı aynı zamanda bir ViewModel üzerinde iyi olacağını düşündüm: Burada bir denetleyici için bir örnektir ve düzgün çalıştığını tarafından bir denetleyici model:

public ActionResult Index() 
     { 
      return View("Index", Activator.CreateInstance<SettingViewModel>()); 
     } 

Ama bu bana hata veriyor:

yok p bu nesne için tanımlanan arametrisiz kurucu.

Yeniyim. Birisi bana bu görünüm modülleri için nasıl başarılacağını söyleyebilir misiniz? Eğer Ninject Nuget yüklerken bir özel bağımlılık çözücü kaydeder ve ASP.NET MVC framework denetleyici fabrika veya denetleyicileri örneğini bağımlılık çözücü ya kullanması nedeniyle

+0

'Activator.CreateInstance ()' yansımalardır, değil. Ninject, bileşenleri açıkça çözmek için kernel.Get () 'işlevini kullanır. Ancak, genellikle çekirdeği uygulamanızın ortasında kullanmamalısınız. Bunun yerine Darin'in cevabına bakınız. –

cevap

4

o denetleyicileri için çalışıyor ve modelleri görüntülemek değil nedenidir. Bağımlılık çözümleyicileriyle ilgili daha fazla bilgiyi this article numaralı telefondan okuyabilirsiniz.

Görünüm modelleri, belirli bir görünümün gereksinimlerini karşılamak için özel olarak tasarladığınız sınıflardır. Onları manuel olarak başlattığınız için, bir DI çerçevesi, bunlara hiçbir şekilde bağımlılık yapamaz ve bunlara herhangi bir bağımlılık enjekte edemez. Bağımlılıkları olmamalıdır. Etki alanı modellerinden eşlenen basit POCO nesneleri olmalıdır. Bir veya daha fazla etki alanı modelinin bir projesini temsil ederler.

+1

Peki "kalın modalar, ince kontrolörler" nasıl elde edilir? Veri veya veri manipülasyonu ile uğraşan her şeyi bildiğim kadarıyla bir modelde olmalı. Veri manipülatör nesnesini ve/veya Bağlam (örn. Varlık bağlamı) nesnelerini nasıl geçmeliyiz? – Seregwethrin