0

私は強く型付けされたビューを持っています

@model IEnumerable<MagazineIndex>

オブジェクトのユーザー入力配列を表します。ドロップダウンもあります。

@Html.DropDownList("DropDownName",
                   (List<SelectListItem>)ViewData["magazines"],
                   new { id = "DropDownName" })

フォームを送信すると、次のエラーが表示されます。

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

私のコントローラーは次のようなものです:

public ActionResult CreateContent(IList<MagazineIndex> indexes,
                                  string DropDownName)

バインド値を修正するにはどうすればよいですか?

4

1 に答える 1

1

HttpPost アクションViewData["magazines"]で、Get アクションで行ったのと同じ方法で入力していることを確認してください。

[HttpPost]
public ActionResult CreateContent(IList<MagazineIndex> indexes, string DropDownName)
{
    ...
    ViewData["magazines"] = ... same stuff as in your GET action
    return View(indexes);
}

これは、POST アクションで同じビューを再表示する場合にのみ必要です。リダイレクトする場合は、必要ありません。必要な理由は明らかです。ビューは、その値に依存する DropDown コントロールをレンダリングする必要があります。

于 2013-03-29T12:07:24.693 に答える