Heim > Backend-Entwicklung > C++ > Warum wirft mein ASP.NET -MVC -Formular -Einreichung ein 'ViewData -Element -Typ Mismatch: Erwartung' iEnumerable ', aber empfangenes System. Int32' 'Fehler?

Warum wirft mein ASP.NET -MVC -Formular -Einreichung ein 'ViewData -Element -Typ Mismatch: Erwartung' iEnumerable ', aber empfangenes System. Int32' 'Fehler?

Patricia Arquette
Freigeben: 2025-02-03 03:01:09
Original
209 Leute haben es durchsucht

Why Does My ASP.NET MVC Form Submission Throw a

ASP.NET MVC -Formulare Fehler: ViewData -Typ Mismatch

Bei der Übermittlung eines ASP.NET -MVC -Formulars können Sie auf den Fehler "Das SEEDDATA -Element mit dem Schlüssel" CategoryID "vom Typ 'System.Int32' stoßen, aber vom Typ 'iEnumerable' sein muss. Dies geschieht normalerweise, wenn Ihre Controller -Aktion eine Sammlung von SelectListItem Objekten für eine Dropdown -Liste erwartet, aber stattdessen eine einzige Ganzzahl empfängt.

Grundursache:

Die Diskrepanz ergibt sich aus einem Missverhältnis zwischen dem Ansichtsmodell und den Erwartungen der Controller -Aktion:

  • Ihr Ansichtsmodell CategoryID Eigenschaft ist eine int.
  • Die Dropdown -Liste in Ihrer Ansicht erfordert eine IEnumerable<SelectListItem>, um ihre Optionen zu füllen.
  • Die GET -Methode des Controllers hat die Dropdown -Liste korrekt gefüllt, aber die Post -Methode kann sie nicht neu bevölkern.

Dies führt zu einem Null CategoryList in der Post -Methode, was den Fehler verursacht. Das Framework versucht, den Wert int in ViewData zu verwenden, wobei ein IEnumerable erwartet wird, was zu dem Typ -Missverhältnis führt.

Lösung:

Die Lösung umfasst die Wiederholung der Eigenschaft CategoryList innerhalb der Postaktion des Controllers. Dies stellt sicher, dass die Dropdown -List -Daten auch nach der Einreichung des Formulars verfügbar sind.

<code class="language-csharp">public ActionResult Create(ProjectVM model)
{
    if (!ModelState.IsValid)
    {
        // Repopulate the CategoryList
        model.CategoryList = new SelectList(db.Categories, "ID", "Name"); 
        return View(model);
    }
    // ... save the model and redirect ...
}</code>
Nach dem Login kopieren

Verständnis des Mechanismus:

Die DropDownListFor Helper -Methode ruft die Auswahlliste aus dem ViewData -Dictionary mit dem Eigenschaftsnamen ab. Wenn die Liste null ist, überprüft sie einen ViewData -Antrag mit demselben Namen. Finden eines int, wobei ein IEnumerable erwartet wird, dass der Fehler.

Dieser Fehler unterstreicht die Bedeutung einer konsistenten Datenmeldung zwischen Ihren Ansichtsmodellen, Ansichten und Controller -Aktionen für nahtlose Formulareinreichungen. Die sorgfältige Beachtung des Datentypmanagements verhindert diese gemeinsamen MVC -Fallstricke.

Das obige ist der detaillierte Inhalt vonWarum wirft mein ASP.NET -MVC -Formular -Einreichung ein 'ViewData -Element -Typ Mismatch: Erwartung' iEnumerable ', aber empfangenes System. Int32' 'Fehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage