2017-05-24 1 views
0

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 YesNoenum 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.

+1

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 –

+1

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) –

+0

Können Sie dies als eine Antwort hinzufügen, so dass Ich kann es akzeptieren. –

Antwort

0

Machen Sie einen Editor für die Zulassung statt einer partiellen.

+0

Kannst du mir ein Beispiel zeigen? Vielen Dank –

Verwandte Themen