0

我有这个返回类型的函数 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())%>

现在它起作用了!

4

2 回答 2

1

不需要循环,就是这个。

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

我会SelectList在你的模型上创建一个属性,而不是一个 getter 方法。

<%= Html.DropDownList("xxx", Model.MySelectList)%>
于 2012-08-10T19:09:45.320 回答
1
<%= Html.DropDownList("xxx", Model.GetItems())%>

尽管这是一种可怕的方法。相反,您应该使用 Html.DropDownListFor ,例如:

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

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

于 2012-08-10T19:10:41.810 回答