提交带有其他路由参数的实体集合

本文关键字:实体 集合 参数 路由 其他 提交 | 更新日期: 2023-09-27 18:06:41

我有一个强类型视图

@model IEnumerable<MagazineIndex>

表示用户输入的对象数组。还有一个下拉菜单:

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

当我提交表单时,我得到这个错误:

没有'IEnumerable'类型的ViewData项具有'DropDownName'键。

控制器是这样的:

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

我必须如何纠正绑定值?

提交带有其他路由参数的实体集合

确保在您的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控件,这取决于它的值