麻烦在MVC2中使用Html.dropDownList()

时间:2012-08-10 19:05:41

标签: asp.net-mvc

我有这个函数返回类型IEnumerable<SelectListItem>

 public IEnumerable<SelectListItem> GetItems()
        {


            IEnumerable<SelectListItem> results = null;

            results =*(some logic)*


            return results;
        }

我尝试使用

将其绑定到视图中的下拉列表
 <% foreach (IEnumerable<SelectListItem> schdItem in Model.GetItems())
{%>

       <%= Html.DropDownList("xxx", schdItem)%>

<%} %>

但它打破了错误信息

Unable to cast object of type 'System.Web.Mvc.SelectListItem' to type 'System.Collections.Generic.IEnumerable`1[System.Web.Mvc.SelectListItem]'.

我该如何解决这个问题?

根据asawyer的评论我将其修改为

  <%= Html.DropDownList("xxx", Model.GetScheduleItems())%>

现在有效!

2 个答案:

答案 0 :(得分:1)

不需要循环,就是这个。

<%= Html.DropDownList("xxx", Model.GetItems())%>

我会在模型上创建SelectList属性而不是getter方法。

<%= Html.DropDownList("xxx", Model.MySelectList)%>

答案 1 :(得分:1)

<%= Html.DropDownList("xxx", Model.GetItems())%>

虽然这是一种可怕的方式。相反,您应该使用Html.DropDownListFor,例如:

<%= Html.DropDownListFor(Model.SelectedItem, Model.Items) %>

其中Model.SelectedItem是项的类型,Model.Items是返回SelectListItems集合的属性。