Fehlerbehebung "System.Int32" vs. "iEnumerable" Fehler in Dropdown -Listen
ein Formular mit einer Dropdown -Liste einreichen kann manchmal zu einem Fehler führen, der einen Typ -Fehlanpassung angibt: Das ViewData
-Relement erwartet einen IEnumerable
-Typ (für die Dropdown -Optionen), erhält jedoch stattdessen eine System.Int32
.
Root Ursache: NULL -Kategorieliste
Dies geschieht typischerweise, da die Eigenschaft CategoryList
innerhalb Ihres Ansichtsmodells (z. B. ProjectVM
) null
ist, wenn das Formular eingereicht wird. Der ViewData
stützt sich auf diese Eigenschaft, um die Dropdown -Liste zu füllen.
Lösung: Wiederholt die Kategorieliste in der Post -Methode
Die Lösung besteht darin, die Eigenschaft CategoryList
in der Post -Aktion -Methode Ihres Controllers ausdrücklich neu zu bevölkern , bevor die Ansicht zurückgibt. Dies stellt sicher
IEnumerable
Hier erfahren Sie, wie Sie Ihre Post -Methode ändern: ViewData
Hinzufügen dieser Zeile erstellt das
und weist espublic ActionResult Create(ProjectVM model) { if (!ModelState.IsValid) { // Repopulate the CategoryList model.CategoryList = new SelectList(db.Categories, "ID", "Name"); return View(model); } // ... (Your existing code to save the model and redirect) ... }
Daten für den SelectList
Helfer Ihrer Ansicht. model.CategoryList
IEnumerable
DropDownListFor()
Wie es funktioniert: ViewData und Selektivliste
Die Helper -Methode (und
) versucht, die entsprechenden -Daten zu finden. Wenn es nicht direkt ein DropDownListFor()
erhält, sucht es nach Daten in DropDownList()
mit dem Eigenschaftsnamen (wie 'categoryId'). Wenn das SelectList
-Relems nicht in SelectList
gilt, tritt der Typfehlanpassungsfehler auf. Indem wir ausdrücklich ViewData
in der Post -Methode einstellen, umgehen wir dieses Problem. ViewData
Das obige ist der detaillierte Inhalt vonWarum wirft meine Dropdown -Liste einen 'System.Int32' vs. 'iEnumerable' -Fehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!