2011-11-30 20 views
6

MVB uygulamasında ViewBag'ı yoğun olarak kullanıyorum, bu kötü uygulama olarak mı değerlendiriliyor? ViewModels (MVC yerine MVC'ye göre daha uygun olduğunu düşündüm) veya ViewBag'ı yoğun kullanmaya devam ederek zaman geçirip geçirmeyeceğime emin değilim. Buna karşı ve buna karşı argümanlar nelerdir? Örnek denetleyici yöntemi modeli (genellikle basit bir etki alanı varlık) yanı sıra ViewBag için aşağıdaki çağrılar var döneceğini:Ağır kullanım ViewBag

  ViewBag.TotalItems = data.Count(); 
     ViewBag.FilteredItems = gridFilters; 
     ViewBag.Action = "Events"; 
     ViewBag.Area = "People"; 
     ViewBag.EntityID = person.EntityID; 
     ViewBag.OrganisationID = ID; 
     ViewBag.Name = string.Format("{0} {1}", person.FirstName, person.LastName); 
     ViewBag.IsEnabled = person.IsEnabled; 
     ViewBag.EntityID = person.EntityID; 
     ViewBag.Favourited = users.IsOnUserFavourites(person.EntityID); 

     ViewBag.Columns = userColumns; 

     ViewBag.Title = "Person : " + string.Format("{0} {1}", person.FirstName, person.LastName) + " - Events"; 

cevap

9

Bunlar gibi sorular genellikle çitin her iki tarafından yanıt alır. Birçok kişi ViewBag'ı bu şekilde kullanmanın kötü bir tasarım olduğunu düşünmekteyim (kendim dahil). Kontrol cihazlarınızı daha az test edilebilir kılar. Görünümleriniz güçlü yazılmadı vb.

Genellikle ViewModel kullanmak iyi bir uygulamadır. Modelinizin bir alan modeli olması yerine, görüntülemekte olduğunuz görünüme özgü bir model oluşturun. Bu şekilde, bu özel görünüm için ihtiyaç duyduğunuz şeye uyarlanmış% 100 özel olabilir. Bunu yaptığınızda ViewBag'ı gerçekten kullanmanız gerekmediğini göreceksiniz. Bazen çok fazla kod (görünüm başına bir görünüm modeli) oluşturabilir, ancak kod oldukça basittir ve bir görünümde değişiklik yapmak başkalarını kırmayacaktır.

+0

Teşekkürler, bu aradığım şey buydu. – Paul

+0

Yine, bunlar gibi soruların çok öznel olduğunu unutmayın. Sizin için neyin işe yaradığı, başkaları için işe yaramayabilir ve başkaları için neyin işe yaramayacağı olabilir. Sadece kendi bakış açımdan cevap veriyorum :) – Dismissile

0

Neden senin model olarak Kişi kullanabilir? Bu şekilde güçlü bir şekilde yazılan görünümü kullanabilirsiniz. Benim kişisel düşüncem, ViewBag'ın oldukça 'sihirli dizeler' olduğu ve tek uygulama olduğun küçük çapta iyi çalışırken, daha büyük uygulamalarda ve projelerde, tüm sihir tellerinin ne olduğunu hatırlamak için herkesi zorlamaya başlamanız. Ayrıca, bir model ve güçlü yazılan bir görünüm kullanacağınız tip güvenliği almıyorsunuz.