MVC ViewModel Error - Für dieses Objekt ist kein parameterloser Konstruktor definiert

8

Ich würde gerne wissen, wie kann ich mein ViewModel auf der Create Action verwenden? Ich habe einige Beispiele aus dem Forum ausprobiert, aber keines hat mein Problem gelöst. Ich habe mir ein paar Tage lang das Hirn gehackt, kann aber nicht herausfinden, was falsch ist.

Immer wenn ich auf die Schaltfläche "Erstellen" klicke, erhalte ich folgende Fehlermeldung: Für dieses Objekt ist kein parameterloser Konstruktor definiert.

%Vor%

Erstellen.cshtml

%Vor%

StoreManager.cs - Snippet

%Vor%     
fvss 03.10.2012, 01:55
quelle

3 Antworten

24

Wenn ich jedes Mal ein Nickel hatte, habe ich dieses Problem gesehen. Es hängt normalerweise mit der Benennung Ihrer Modelleigenschaften und ihrer Verwendung in DropDownList zusammen. 99.999% der Zeit ist es, weil Leute Html.DropDownList() benutzen und sie wie ihre SelectList benennen. Dies ist ein Grund, warum Sie den stark typisierten DropDownListFor verwenden sollten.

In diesem Fall besteht Ihr Problem darin, dass Sie SelectList s mit den Namen Genres und Artists haben, dann haben Sie in Ihrer Ansicht Folgendes:

%Vor%

Siehe, gleicher Name.

Was Sie tun sollten, ist, Ihr Modell zu ändern, damit SelectList s den Namen GenreList und ArtistList erhält. Ändern Sie dann Ihre Ansicht, um ein stark typisiertes Modell zu verwenden.

%Vor%

Der Grund dafür ist, dass Sie einen Wert namens Genres an den Controller senden. Der Standardmodellbinder sucht pflichtgemäß im Modell nach etwas namens Genres und instanziiert es. Aber statt einer ID oder Zeichenkette findet sie eine SelectList namens Genres, und wenn sie versucht, sie zu instanziieren, findet sie, dass es keinen Standardkonstruktor gibt.

Also dein Fehler. SO ist gefüllt mit Fragen, die nach dem gleichen Ding fragen.

    
Erik Funkenbusch 03.10.2012, 04:10
quelle
0

Ähnlich wie Erik Funkenbuschs Antwort Ich habe meinem Formular eine DropDownList hinzugefügt, in meinem Fall jedoch nicht (und war nicht beabsichtigt) mit dem Formular so zu senden, wie es außerhalb der <form></form> -Tags war:

%Vor%

Da das Modell nur das Feld zur Anzeige enthielt, verursachte dies auch den No parameterless constructor defined for this object Fehler, weil das Feld überhaupt nicht übergeben wurde.

In diesem Fall habe ich es durch Hinzufügen einer Ausschlussbindung behoben:

%Vor%     
SilverlightFox 29.07.2014 11:12
quelle
0

Für mich war das Problem in der BeginForm () -Methode selbst. Es sah so aus:

%Vor%

Von der Anmeldeseite eines anderen Projekts kopiert und eingefügt, die kein Dropdown-Menü enthält.

Entfernen Sie das Model aus der Parameterliste und alles funktioniert gut:)

    
VictorySaber 07.08.2015 10:24
quelle