C# – MVC3 DropDownList + ViewBag issue

asp.net-mvc-3cnet

This code works fine

List<StateModelView> stateList = (from x in db.States
                                select new StateModelView {
                                    ID = x.ID,
                                    StateName = x.StateName
                                }).OrderBy(w => w.StateName).ToList();

ViewBag.StateList = new SelectList(stateList, "ID", "StateName");

under HTML I have

 @Html.DropDownList("StateList", ViewBag.StateList)

Anyway I got the error

CS1973: 'System.Web.Mvc.HtmlHelper' has no applicable method named 'DropDownList' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax.

How I can resolve it?

Best Answer

The ViewBag is a dynamic object, which cannot be used directly from your View (that is basically what the error is saying). You'll need to cast it:

@Html.DropDownList("StateList", (SelectList) ViewBag.StateList)

Another option would be to use ViewData though it may also require casting.

Related Topic