2009-06-18 50 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

相關問題