没有带键的ViewData项

时间:2009-08-31 09:53:00

标签: asp.net-mvc

发布多选时遇到问题,我收到错误: “没有带有'IEnumerable'类型的'NotificationUsergroups'键的ViewData项。”

在控制器中我有:

            MultiSelectList NotificationUsergroups = new MultiSelectList(Usergroups, "UsergroupID", "UsergroupName", selectedNotificationUsergroupIDs);

        ViewData["NotificationUsergroups"] = NotificationUsergroups;

在视图中我有:

<%= Html.ListBox("NotificationUsergroups")%>

在后期行动中:

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult ObjectEdit([BindAttribute(Include = "BookingObjectID,BookingObjectName,Activated,ActivationStartDate,ActivationEndDate,AvalibleObjects,AvalibleObjectsPerBooking")]BookingObject bookingobject, int[] Objectcategories, int[] NotificationUsergroups, int[] CancellationUsergroups)
    {
        if (ModelState.IsValid)
        {
            try
            {
                _bs.SaveBookingObject(bookingobject);

                if (NotificationUsergroups != null)
                    _bs.SaveNotificationUsergroups(bookingobject.BookingObjectID, NotificationUsergroups);

                return View("CreateObject", new BookingObjectsAdminEditViewModel { BookingObject = bookingobject });
            }
            catch {
                ModelState.AddModelError("SomeError", "errrrrrrrrror");
            }
        }

可能有什么问题?我检查了拼写和所有,如果我没有使用多选列表运行,则可以正常工作。

是什么让数据“消失”?

提前致谢 / M

2 个答案:

答案 0 :(得分:1)

您还需要在POST接受方法中设置viewdata,因为如果它有错误,它将返回到原始视图。

善,

或者将它们包含在你的模型中:)你需要改变视图。

答案 1 :(得分:0)

您的操作必须设置您的ViewData。

如果您的操作调用

 ViewData["NotificationUsergroups"] = NotificationUsergroups;
一切都应该没问题。