Ich habe eine ASP.Net MVC-Anwendung mit einem Modell, das mehrere Schichten tief ist, die eine Sammlung enthält.ASP.Net MVC - Modell mit Sammlung nicht auf Postback Population
Ich glaube, dass die Ansicht zum Erstellen der Objekte alle richtig eingerichtet ist, aber es füllt nur nicht die Auflistung innerhalb des Modells, wenn ich das Formular an den Server senden.
Ich habe ein Stück von Daten, die somit in der Klassenhierarchie zu finden ist:
person.PersonDetails.ContactInformation[0].Data;
Diese Klassenstruktur von LinqToSQL erstellt wird, und ist vom Typ Contact EntitySet<ContactData>
. Zum Erstellen der Ansicht ich folgend passieren:
return View(person);
und in der Ansicht, habe ich eine Form, die ein einziges Textfeld mit dem Namen des oben genannten Bereich zugeordnet enthält:
<%= Html.TextBox("person.PersonDetails.ContactInformation[0].Data")%>
die POST-Methode in meinem Controller dann ist wie folgt:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create (Person person)
{
//Do stuff to validate and add to the database
}
Es ist an dieser Stelle, wo ich als person.PersonDetails.ContactInformation.Count() == 0 verloren gehen. Also der ModelBinder hat ein ContactInformation Objekt erstellt, aber nicht mit dem Objekt gefüllt, das es halten sollte (zB ContactData) mit dem Index 0.
Meine Frage ist zweifach: 1. Habe ich den richtigen Ansatz genommen .. dh sollte diese Arbeit? 2. Irgendwelche Ideen, warum es das ContactInformation-Objekt möglicherweise nicht füllen konnte?
Vielen Dank, Richard
Danke, das funktioniert perfekt. Ich habe ein Beispiel mit viel tieferer Hierarchie versucht, das sehr gut funktioniert hat, aber Sie haben wahrscheinlich Recht, dass es sich in der Komplexität verliert. Zwei Kommentare zur Verdeutlichung: 1. Ich brauchte nur die [Bind (Prefix = "Person.PersonDetails.ContactInformation")] ContactInformation [] info) und entsprechende Einstellung des Modellobjekts. 2. ContactInformation [] muss EntitySet entsprechen, damit sie dem richtigen Typ entspricht. Jetzt, um mehr Details über Präfix nachzuschlagen .... Danke für Ihre Hilfe. Richard –
Richbits
Schön, hatte noch nicht über "Präfixe" gelesen! – Ropstah
gute .. Oder Sie könnten Ihre eigenen benutzerdefinierten Modellbinder entwickeln, die verstehen würde, wie Sie Ihr komplexes Modell aus den Formulareingaben ableiten, können Sie Link oder impl teilen. Wenn du es schon getan hast? –