1. ホーム
  2. c#

[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。

2022-02-07 07:52:16

質問

MVCでドロップダウンをバインドしているとき、いつもこのエラーが発生します。 There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key country .

表示

@Html.DropDownList("country", (IEnumerable<SelectListItem>)ViewBag.countrydrop,"Select country")

コントローラ

List<Companyregister> coun = new List<Companyregister>();
coun = ds.getcountry();

List<SelectListItem> item8 = new List<SelectListItem>();
foreach( var c in coun )
{
    item8.Add(new SelectListItem
    {
        Text = c.country,
        Value = c.countryid.ToString()
    });
}

ViewBag.countrydrop = item8;
return View();

解決方法がわからない。

どのように解決するのですか?

アクションの変更 ViewBag.countrydrop = item8ViewBag.country = item8; で、Viewではこのように書きます。

@Html.DropDownList("country",
                   (IEnumerable<SelectListItem>)ViewBag.country,
                   "Select country")

実際に書くと

<ブロッククオート

Html.DropDownList("国", (IEnumerable)ViewBag.country。 国を選択します。)

または

Html.DropDownList("国","国選択)

を探します。 IEnumerable<SelectListItem>ViewBag をキーに この場合、このオーバーロードを使用することもできます。

@Html.DropDownList("country","Select country") // it will look for ViewBag.country and populates dropdown

参照 動作DEMO例