Ich verwende MVC 5, C# 6 und VS 2017. Als Teil eines Modells, das ich verwenden, um ein MVC-Formular zu füllen habe ich eine Sammlung von Admission
, wo die Klasse Admission
definiert ist alsBinden einer Liste von komplexen Modell auf Post
public class Admission
{
public DateTime AdmissionDate {get; set;}
public YesNo EmergencyAdmission {get: set;}
public DateTime DischargeDate {get; set;}
}
und YesNo
ist ein enum
. Zur Vereinfachung habe ich das Vorgängermodell auf
public class Patient
{
public int PatientID {get; set;}
public string PatientName {get; set;}
public List<Admission> Admissions {get; set;}
}
reduziert. Anmeldungen können dynamisch auf der Client-Seite hinzugefügt werden. Wenn das Modell instanziiert wird, gibt es ein einzelnes leeres admission
. Innerhalb der Form habe ich
@foreach (var item in Model.Patient.Admissions)
{
Html.RenderPartial("Admission", item);
}
und in der Teilansicht verwende ich dann:
@Html.EditorFor(m => m.AdmissionDate)
@Html.EditorFor(m => m.EmergencyAdmission)
@Html.EditorFor(m => m.DischargeDate)
Ich habe Editor Vorlagen die Daten und die YesNo
enum
zu handhaben.
Meine Frage ist, dass ich nicht weiß, wie man das Modell auf Post für die Liste der Zulassungen bindet. Wenn ich Request.Form benutze und meinen eigenen Binder schreibe, werden die Elemente für die Teilansicht als Arrays veröffentlicht, die Array-Struktur ist auf Request.Form verloren. Die einzigen Lösungen, die ich gesehen habe, beinhalten ziemlich komplexe JavaScript/jQuery-Funktionen. Ich möchte so viel wie möglich Serverseite tun. Wenn ich diesen Teil lösen kann, habe ich eine Möglichkeit, zusätzliche Zulassungen dynamisch hinzuzufügen.
Ihre Verwendung von 'RenderPartial()' bedeutet, dass Sie nicht die richtigen 'name' Attribute (mit dem notwendigen Präfix) für die Bindung erzeugen. Ich schlage vor, Sie lesen [diese Antwort] (http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943), um zu verstehen, wie Formularsteuerelemente für eine Sammlung –
und für dynamisch generiert werden Hinzufügen und Löschen von Sammlungsobjekten, siehe [hier] (https://stackoverflow.com/questions/28019793/submit-same-partial-view-called-multiple-times-data-to-controller/28081308#28081308) und [hier ] (https://stackoverflow.com/questions/40539321/a-partial-view-passing-a-collection-using-the-html-begincollectionitem-helper/40541892#40541892) –
Können Sie dies als eine Antwort hinzufügen, so dass Ich kann es akzeptieren. –