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% 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:
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.
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.
Ä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:
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%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:)
Tags und Links asp.net-mvc asp.net-mvc-3 .net razor asp.net