2012-08-10 56 views
0

我有這個函數返回IEnumerable<SelectListItem>的類型。在MVC2中使用Html.dropDownList()的問題

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())%> 

現在的作品!

+1

您試圖爲每個選擇列表**項目**創建一個選擇元素,而不是一次收集! – asawyer 2012-08-10 19:09:10

+0

@asawyer ...你剛回答我的問題! – developer747 2012-08-10 19:11:24

回答

1

沒有循環需要,只是這一點。

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

我會使SelectList屬性在您的模型而不是getter方法。

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

Althought這是去做一個可怕的方式。相反,你應該使用Html.DropDownListFor像這樣:

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

哪裏Model.SelectedItem是項目的類型,並Model.Items是返回SelectListItems的集合的屬性。