没有名为“taskTypes”的ViewData项,类型为IEnumerable<SelectListItem>。

3
在ASP.NET MVC中,当我给Html.DropDownList添加一个onchange属性时,会出现上述错误信息:
<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();
    }

有人知道问题可能是什么吗?

谢谢

1个回答

3

该控制器方法上的 AcceptVerbs 属性表示它将构建 ViewData 实例并返回关联的 View 以显示您的表单。您确定负责处理表单提交(或保存数据)的控制器方法以相同的方式构建 ViewData 实例吗?


1
谢谢,Post方法中有一个拼写错误。 - Paul
我在post方法中也有一个类型错误。 - VoodooChild

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接