2009-06-18 29 views
3

我得到添加onchange属性在ASP.NET MVC一个Html.DropDownList当上述错误信息:没有与关键“taskTypes”没有ViewData的项目类型的IEnumerable <SelectListItem>

<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(); 
    } 

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

感谢

回答

3

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

+1

谢谢,Post方法中有一个错字。 – Paul 2009-06-19 08:32:51

相关问题