2013-05-07 14 views
6

olduğunu ben bir model var Görünüm bu satırları var: Ben formu kaydetmeye çalıştığımdaMVC 4 DropDownListFor hata türüne hiçbir ViewData öğe var 'IEnumerable <SelectListItem>' tuşuna

<div class="editor-field"> 
    @Html.DropDownListFor(model => 
     model.category,(SelectList)ViewBag.categoryList) 
    @Html.ValidationMessageFor(model => model.category) 

</div> 

alıyorum hatadır:

anahtar 'kategorisi' olan 'IEnumerable' türünde ViewData öğesi yok. Açıklama: İşlenmeyen bir özel durum, geçerli web isteğinin yürütülmesi sırasında oluştu. Hatayla ilgili daha fazla bilgi ve kodda 'un nereden kaynaklandığı hakkında yığın izini gözden geçirin.

durum ayrıntıları: iletisi: tip anahtar 'kategorisi' vardır 'IEnumerable' hayır ViewData kalemi vardır.

ben yaptım (veya yapmaya çalıştım) Bu kılavuzda yapılır şeyi beri, sorunun ne olduğunu anlamıyorum

: video da bu bağlantı bulunabilir https://www.youtube.com/watch?v=7HM6kDBj0vE

(Bölüm 6 - otomatik) istekte verilere bağlanma: http://www.lynda.com/ASPNET-tutorials/ASPNET-MVC-4-Essential-Training/109762-2.html

cevap

10

i olsun hata i formu

kaydetmeye çalıştığınızda

Sorununuzun olduğu yer burası. Listenizi posta yönteminizde yeniden oluşturmadığınızdan şüpheleniyorum. Alma yönteminizde sahip olduğunuz aşağıdaki kod satırları, özellikle aynı görünümü döndürdüğünüzde veya bir dropdown listesinde ViewBag.categoryList'u kullanan bir görünümde de posta yönteminizde olmalıdır. Eğer dropdownlistfor html yardımcı olan bir null nesne kullandığınızda

var categoryList = new SelectList(new[] { "auto", "elec", "games", "Home" }); 
ViewBag.categoryList = categoryList; 

Sen hata bu tür olsun. Eğer

Ben aynı problem vardı
@Html.DropDownListFor(model => model.PropertyName,null) 
// or 
@Html.DropDownList("dropdownX", null, "") 
+1

çok teşekkür ederim! Bu elbette doğru cevaptır. –

+0

Neyi anlamadım, neden aynı işlevde post işlevinde yeniden yapılandırmam gerekiyor? Sadece kullanıcı tarafından seçilen tek bir sonuca ihtiyacım olduğunu düşündüm ve modelin kategori alanına geri döndü. –

+0

Soru şu: '@ Html.DropDownListFor (model => model.category, (SelectList) ViewBag.categoryList) 'olan dönen görünümü kullanıyor musunuz? Eğer öyleyse, nereden geldiği önemli değil. Ne olursa olsun, bir ** olmayan NULL ** listesi ile görünüm kaynağıdır. Bir gönderiden sonra, bir gönderi yaptıktan sonra değerler artık orada değil - sadece onları "yayınlama" çünkü. –

-1

gibi bir şey yaparsanız bu hata kolayca, sana böyle hata üretir farklı bir isimle aynı denetleyicisi aynı tablo verilerinden ViewData oluşturmak üzere olunca sanırım çoğaltılabilir Eski ViewData'mı eski işlevlerden (yöntem) aynı denetleyicideki yeni işleve (yöntem) kopyaladım ve benim için çalıştı.

İlgili konular