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 回答