0

SelectListを作成し、次のように初期化しました。

SelectList _selectList = new SelectList(new List<SelectListItem>
{
    new SelectListItem{Text = "aa", Value="bb"},
    new SelectListItem{Text = "cc", Value = "dd"},
    new SelectListItem{Text = "gg", Value = "ff"}
});

(これはサンプルです。通常、15個または20個のSelectListItemを追加します)

_selectList次に、インスタンスを設定するために、このインスタンスのテキストと値を取得しようとします。

foreach (var item in _selectList)
{
    var a = item.Text;
    var b = item.Value;
}

この時点で、をitem.Text返しSystem.Web.Mvc.SelectListItem、をitem.Value返しますnull

_selectList複製中にカーソルで確認すると、すべてSelectListItemsとその値が下にbase{System.Web.Mvc.MultiSelectList}あり、これらの値を取得できません。質問は「どうすればいいですか?」です。

4

1 に答える 1

0

SelectListを使用する場合は、次のように使用できます。

var model = new IndexModel()
{
    lista = new SelectList(new string[] { "BMW","Volvo" }),
    listb = new SelectListItem[]
        {
            new SelectListItem {Text = "aa", Value = "bb"},
            new SelectListItem {Text = "cc", Value = "dd"},
            new SelectListItem {Text = "gg", Value = "ff"}
        },
     listc = new SelectList(new SelectListItem[]
              {
                       new SelectListItem {Text = "aa", Value = "bb"},
                       new SelectListItem {Text = "cc", Value = "dd"},
                       new SelectListItem {Text = "gg", Value = "ff"}
              }, "Value", "Text")

};

アイテムのリストを作成するのに役立ちます。ヘルパーでIEnumerableを直接使用できます。

@Html.DropDownList("dropdown", Model.lista)
@Html.DropDownList("dropdown2", Model.listb)
@Html.DropDownList("dropdown3", Model.listc)

編集:更新されたコード。実際、SelectListソースを調べた後、MultiSelectList-> http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/4284ca5270b9#src/System.Web.Mvc/MultiSelectList.csから派生し、 DataBinderを使用して指定されたフィールドに基づいてテキストと値を評価します。したがって、フィールド名を明示的に指定すると(listcの場合と同様)、SelectListItemsのリストで機能させることができます。

mz

于 2013-03-13T16:42:20.547 に答える