Ich bin ein bisschen ein MVC-Neuling, also müssen Sie mir verzeihen, was ich mir vorstelle, ist eine elementare Frage.
Ich habe ein benutzerdefiniertes Viewmodel erstellt, um eine Multiselect-Liste in meinem Formular zu haben:
public class CustomerFormViewModel
{
public Customer Customer { get; private set; }
public MultiSelectList CustomerType { get; private set; }
public CustomerFormViewModel(Customer customer)
{
Customer = customer
// das gibt eine MultiSelectList zurück:
CustomerType = CustomerOptions.Get_CustomerTypes(null);
}
}
Ich habe festgestellt, dass mein erster Versuch nur den ersten Wert des Multiselect erfasst hat, und ich vermute, dass dies daran liegt, dass meine Erstellaktionen so aussahen:
// GET: /Buyer/Create
public ActionResult Create() { ... }
// POST: /Buyer/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Customer customer) { ... }
Also habe ich mich entschieden, es wie folgt zu ändern:
// GET: /Buyer/Create
public ActionResult Create() { ... }
// POST: /Buyer/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(CustomerFormViewModel model) { ... }
Damit ich die volle Ausgabe der MultiSelectList erhalten und entsprechend analysieren kann. Das Problem ist, dass sich beschwert wird, dass es keinen parameterlosen Konstruktor für das Viewmodel gibt (und es gibt keinen) - und ich bin mir nicht sicher, wie ich das richtig beheben soll. Nichts, was ich versucht habe, hat funktioniert, und ich brauche wirklich Hilfe!
Falls es hilft, sieht meine Ansicht so aus:
<%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
...
<% using (Html.BeginForm())
<%= Html.ListBox("CustomerType", Model.CustomerType)%>
...