2010-01-17 17 views
37

Dies ist etwas eine zweiteilige Frage (bitte lassen Sie mich wissen, wenn sie aufgeteilt werden sollten).ASP.NET MVC-Bind-Array in Modell

1) Ich habe eine Modellklasse mit einem Array von Objekten darin enthalten. Ich würde gerne in der Lage sein, dies automatisch zu binden, so dass ich ein einzelnes pollModel Argument in meinen Controllern akzeptieren kann.

public class pollResponseModel 
{ 
    public long id { get; set; } 
    public long pollID { get; set; } 
    public string text { get; set; } 
    public long count { get; set; } 
} 

public class pollModel 
{ 
    public long id; 
    public long entID { get; set; } 
    public string question { get; set; } 
    public DateTime posted { get; set; } 
    public DateTime expiration { get; set; } 

    public pollResponseModel[] responses { get; set; } 
} 

Das Problem ist, dass ich nicht sicher bin, wie das responses Feld zu binden, da es jede beliebige Größe sein kann. Nun, ich kann es richtig binden, wenn ich die Bearbeitungsansicht anzeige, aber das ist es schon. Das führt mich zum zweiten Teil meiner Frage:

2) Was ist eine akzeptable Möglichkeit zum dynamischen Erstellen und Entfernen von Daten in einer Liste auf dem Client, so dass es an ein Modell gebunden und in seiner modifizierten Form auf zugegriffen werden kann der Server? Ich stelle mir vor, dass der Erstellungs-/Entfernungsprozess wie die iPhone-Listen-GUI funktioniert: Eine einzelne Schaltfläche + fügt ein neues Element hinzu und eine Schaltfläche in jeder Datenzeile entfernt sie aus der Liste. Ich würde mir vorstellen, dass jQuery ein geeigneter Ausgangspunkt ist, aber meine JS-Fähigkeiten sind sehr begrenzt.

Antwort

41

Schauen Sie sich diesen Artikel von Phil Haack: Model Binding To a List. Es erläutert genau, was Sie tun müssen, um an Listeneigenschaften oder komplexe Objekte gebunden zu werden.

Im Wesentlichen müssen Sie nur Ihre POST-Daten auf die richtige Weise für das Modell Bindemittel zu analysieren, um es zu analysieren. Der Artikel erläutert, wie Sie versteckte Indexfelder hinzufügen und Ihre komplexen Eigenschaften in Ihrem Formular darstellen.

+0

nur für den Link, den Sie zur Verfügung gestellt. Großartiger Artikel –