Нет элемента ViewData с ключом «taskTypes» типа IEnumerable <SelectListItem> - PullRequest
3 голосов
/ 18 июня 2009

Я получаю сообщение об ошибке выше при добавлении атрибута onchange в Html.DropDownList в ASP.NET MVC:

<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 голосов
/ 18 июня 2009

Атрибут AcceptVerbs в этом методе контроллера указывает, что он создаст этот экземпляр ViewData и вернет связанный View для отображения вашей формы. Вы уверены, что метод контроллера, отвечающий за обработку отправки формы (или сохранение данных), создает этот экземпляр ViewData таким же образом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...