此代码可以正常工作

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'的适用方法,但似乎具有该名称的扩展方法。扩展方法不能动态调度。考虑强制转换动态参数或在不使用扩展方法语法的情况下调用扩展方法。

我该如何解决?

最佳答案

ViewBag是一个 dynamic 对象,无法直接在您的View中使用(基本上就是错误所要表达的意思)。您需要强制转换:

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

另一个选择是使用ViewData,尽管它也可能需要强制转换。

关于c# - MVC3 DropDownList + ViewBag问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9642821/

10-11 15:34