2013-12-13 17 views
11

Próbuję powiązać pomocnika DropDownListFor z ramką zdefiniowaną w kontrolerze. Ale dostaję błąd.Bind Lista rozwijanaDla pakietu Viewbag

View Code: -

@Html.DropDownListFor(model => model.CurrencyID, ViewBag.CurrencyList as SelectListItem)) 

Kod Kontroler: -

public ActionResult Create() 
> { 
> var content = from p in db.Currency 
>     where p.IsActive == true 
>     orderby p.CurrencyName 
>     select new { p.CurrencyID, p.CurrencyCode }; 
> 
> var x = content.ToList().Select(c => new SelectListItem   
>       { 
>        Text = c.CurrencyCode, 
>        Value = c.CurrencyID.ToString(), 
>        Selected = (c.CurrencyID == 68) 
>       }).ToList(); 
>    ViewBag.CurrencyList = x; 
> 
>    return View();    
>   } 

Błąd odebrane: - System.Web.Mvc.HtmlHelper”nie zawiera definicja "DropDownListFor" i najlepsze przeciążenie metody rozszerzenia "System.Web.M vc.Html.SelectExtensions.DropDownListFor (System.Web.Mvc.HtmlHelper, System.Linq.Expressions.Expression>, System.Collections.Generic.IEnumerable) 'ma pewne nieprawidłowe argumenty:

+0

nie można przypisać jeden selectListItem do DropdownList. ViewBag.CurrencyList jako SelectListItem, tutaj potrzebna była lista wyboru lub lista lub element podlegający przeliczeniu. Tak więc IEnumerable działało. Właśnie, jeśli chcesz wiedzieć. – Sakthivel

Odpowiedz

23

Musisz zmienić

@Html.DropDownListFor(model => model.CurrencyID, ViewBag.CurrencyList as SelectListItem)) 

do

@Html.DropDownListFor(model => model.CurrencyID, ViewBag.CurrencyList as IEnumerable<SelectListItem>) 
+1

Wielkie dzięki. To działa. – Karan

5

Możesz to również zrobić. To powinno działać:

ViewBag.CurrencyID = x; 

oraz w widoku:

@Html.DropDownListFor(model => model.CurrencyID, null) 

Nadzieja to pomaga!