Подтвердить что ты не робот

Ошибка MVC3 DropDownList + ViewBag

Этот код отлично работает

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");

под HTML Я

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

Во всяком случае, я получил ошибку

CS1973: "System.Web.Mvc.HtmlHelper" не имеет применимого метода с именем "DropDownList", но по этому имени имеет метод расширения. Методы расширения не могут динамически отправляться. Рассмотрите возможность использования динамических аргументов или вызова метода расширения без синтаксиса метода расширения.

Как я могу его решить?

4b9b3361

Ответ 1

ViewBag - объект dynamic, который нельзя использовать непосредственно из вашего представления (это в основном то, что говорит об ошибке). Вам нужно бросить его:

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

Другим вариантом было бы использовать ViewData, хотя это может также потребовать кастинг.

Ответ 2

Вам нужно отбросить элемент ViewBag (анонимный) в SelectList:

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

Еще один способ обойти эту проблему кастинга и из того, что я собираю, - это использовать View Model и объединить ViewBag вместе.