2009-06-18 1 views
3

Я получаю сообщение об ошибке выше при добавлении OnChange атрибута к Html.DropDownList в ASP.NET MVC:Там нет ViewData элемента с ключом «taskTypes» типа 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

Спасибо, в методе Почты была опечатка. – Paul

+0

У меня тоже был тип почтового метода. – VoodooChild