MVC3 DropDownList + ViewBag问题

时间:2012-03-10 00:33:16

标签: c# .net asp.net-mvc-3

此代码可以正常使用

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'的适用方法,但似乎有一个名称的扩展方法。无法动态分派扩展方法。考虑转换动态参数或调用扩展方法而不使用扩展方法语法。

我如何解决它?

2 个答案:

答案 0 :(得分:72)

ViewBagdynamic对象,不能直接在您的View中使用(基本上就是错误所说的)。你需要施展它:

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

另一个选择是使用ViewData,但它也可能需要转换。

答案 1 :(得分:9)

您需要将ViewBag项(匿名)转换为SelectList:

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

解决这个转换问题的另一种方法是从我收集的首选方法开始,使用View Model并绕过ViewBag。