1. ホーム
  2. asp.net-mvc

[解決済み] キー 'xxx' を持つ 'IEnumerable<SelectListItem>' 型の ViewData アイテムは存在しません。

2023-04-25 22:57:27

質問

Stack Overflowにこの件に関する投稿がいくつかありますが、私の現在の状況で問題を解決するような回答はありません。

私はその中にテーブルを持つページを持っており、各行にはいくつかのテキストフィールドとドロップダウンがあります。すべてのドロップダウンは同じSelectListデータを使用する必要があるので、私は次のように設定しました。

コントローラ

ViewData["Submarkets"] = new SelectList(submarketRep.AllOrdered(), "id", "name");

表示

<%= Html.DropDownList("submarket_0", (SelectList)ViewData["Submarkets"], "(none)") %>

私は多くの場所でまさにこのセットアップを使用していますが、なぜかこの特定のビューではエラーが発生します。

キー 'submarket_0' を持つ 'IEnumerable' タイプの ViewData アイテムはありません。

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

OK、だから答えはこの問題についてのいくつかの他の記事から派生し、それがあります。

もしあなたの ViewDataSelectList と同じ名前の DropDownList と同じ名前にすると、Htmlヘルパーは自動的にあなたの DropDownList にそのデータを入力します。 もし第2パラメータ この場合、ソースであるSelectListを指定します。

私のエラーで起こったことは

ドロップダウンリストを含むテーブルが部分ビューで ViewData が変更され、もはや SelectList を参照していたのですが、その HtmlHelper は (エラーを投げる代わりに) ViewData (GRRR!!) の中で "submarket_0" という名前の SelectList を見つけようとしましたが、それでも見つからず、そのことでエラーを投げました :)

間違っていたら訂正してください。