0

type を返すこの関数があります 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ゲッターメソッドではなく、モデルのプロパティを作成します。

<%= 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 に答える