2010-02-26 12 views
6

Birkaç açılır liste ve çoktan seçmeli listeleri olan bir ASP.NET MVC uygulamasına sahibim. Esas olarak, birçok seçenek listesi.ASP.NET MVC Modeli ve Görünüm Listeleri İçin ViewData

Soruma; Bu listeleri, Modelin bir parçası olarak veya ViewData olarak görünüme iletmek daha mı iyidir?

Onlara şu anda modelde ihtiyaç duymadıkları için ViewData olarak geçiyorum ve model üzerinde geçiş yapmak için hantal olma ihtimali var gibi görünüyorlar (seçtiğiniz öğeyi veya öğeleri aldım). Aşağı tarafta, ViewData'nın, güçlü yazılan model kadar güzel olmayan View'de dökümüne ihtiyacı vardır.

Burada en iyi uygulama var mı? Bunlardan her ikisi için bile artı ve eksileri önerileri takdir edilecektir.

cevap

6

Bu verileri iletmek için ViewModels'i kullanmanızı öneririz. ViewData'yı "sihirli dizelerle" kullanmaya eğilimli bir hatadır ve "sihirli dizeleri" hatırlamak yerine intellisense kullanmayı tercih ediyorum. Ve denetleyicide bu SelectLists'i oluşturmanız gerekmez. Sadece bazı IEnumerable kullanın ve görünümde MvcContrib gelen ToSelectList uzantısı yöntemini kullanın.

+1

+1 Konvansiyonel olarak, sihirli ipleri çıkarmak için elimizden geleni yaptık. Sadece bahsettiğin şey için değil, çünkü intellisense fantastik, ama gerçek kicker, sihirli dizelerin her zaman iyi bir şekilde derlemesidir. Daha sonra çalışma zamanında havaya uçurma fırsatına sahipler. Ah ... Şiddetle yazılan şeyler derleme zamanında patlar, bu da hataları tespit etmeyi daha kolay hale getirir. –

-1

Yalnızca 1 öğeye sahip olduğum halde ViewData'yı kullanıyorum. Yani, birden çok nesne gönderiyor ve birden fazla açılırsa doldurmanız gerekiyorsa bir görünüm modeli oluştururdum. Web uygulaması projesinde bu görünüm modelini de oluşturabilirim, böylece görünüm modeliniz SelectList nesnelere sahipse, etki alanı modelinizdeki MVC dll'ye bir referansa ihtiyacınız olmaz.

+0

Ve bu iyi bir şey mi? – Lankymart