3 Stimmen

Es gibt kein ViewData-Element mit dem Schlüssel 'taskTypes' vom Typ IEnumerable<SelectListItem>

Ich erhalte die obige Fehlermeldung beim Hinzufügen eines onchange-Attributs zu einer Html.DropDownList in ASP.NET MVC:

<td><%= Html.DropDownList("taskTypes", (IEnumerable<SelectListItem>)ViewData["TaskTypes"], "None", new { onchange = "document.getElementById('NewTask').submit()" })%></td>

Wenn die Ansicht anfänglich geladen wird, tritt der Fehler nicht auf. Nur bei der Buchung zurück, nachdem das ausgewählte Element geändert wird. Mein Controller-Code ist:

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

Weiß jemand, was das Problem sein könnte?

Danke

3voto

James Alexander Punkte 5851

Das AcceptVerbs-Attribut dieser Controller-Methode zeigt an, dass sie diese ViewData-Instanz aufbauen und die zugehörige View zurückgeben wird, um Ihr Formular anzuzeigen. Sind Sie sicher, dass die Controller-Methode, die für die Bearbeitung der Formularübermittlung (oder das Speichern der Daten) verantwortlich ist, diese ViewData-Instanz auf dieselbe Weise aufbaut?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X