没有ViewData的项目与IEnumerable类型的键“taskTypes” (There is

2019-09-16 12:17发布

我收到上述错误信息添加onchange属性在ASP.NET MVC一个Html.DropDownList时:

<td><%= Html.DropDownList("taskTypes", (IEnumerable<SelectListItem>)ViewData["TaskTypes"], "None", new { onchange = "document.getElementById('NewTask').submit()" })%></td>

当视图最初加载,我没有得到这个错误。 只有回发时所选择的项目更改后。 我的控制器代码是:

[AcceptVerbs(HttpVerbs.Get), RequiresAuthentication]
    public ActionResult NewTask()
    {
        List<SelectListItem> dropDownData = new List<SelectListItem>();
        List<SelectListItem> statusDropDownData = new List<SelectListItem>();

        foreach (TaskStatus t in tasks.GetTaskStatus())
        {
            statusDropDownData.Add(new SelectListItem { Text = t.Status, Value = t.TaskStatusID.ToString() });
        }

        foreach (TaskType t in tasks.GetTaskTypes())
        {
            dropDownData.Add(new SelectListItem { Text = t.Reference, Value = t.TaskTypeID.ToString() });
        }

        ViewData["TaskStatus"] = statusDropDownData;
        ViewData["TaskTypes"] = dropDownData;

        if (Request["taskTypes"] != null)
        {
            string tt = Request["taskTypes"];
        }


        return View();
    }

有谁知道这个问题可能是什么?

谢谢

Answer 1:

在该控制方法的AcceptVerbs属性表明,它会建立该ViewData的实例,并返回相关的视图来显示您的窗体。 您是否确信负责处理表单提交(或保存数据)控制器方法建立的是ViewData的情况下以同样的方式?



文章来源: There is no ViewData item with the key 'taskTypes' of type IEnumerable