Frage

Ich verwende MVC 2.0 in einer ASP.NET-Anwendung mit NHibernate.

Ich habe eine Arbeits View, Controller und Datenzugriffsschicht NHibernate, die anzeigen können und eine Einheit mit einer Beziehung zu einer anderen zugeordneten Einheit speichern:

Person -> Lage

Es ist mit dem HTML-Helfer HTML.DropDownListFor () eine Liste aller Standorte angezeigt werden soll. Der Benutzer kann aus der Liste eine der Standorte auszuwählen, und drücken Sie Speichern.

Das Standardmodell Bindemittel setzt korrekt den Wert der Lage auf der Entität Person gespeichert werden. Dieser Ort ist eine nhibernate Einheit abgebildet und wird instanziiert und hat den ID-Wert, der in der Dropdown-Liste ausgewählt wurde. Offensichtlich, da die Drop-Down-Liste, die Standorte hält nur die IDs der Standorte hat, die restlichen Werte für den Standort sind null. Das ist in Ordnung. Ich versuche, nur die Person mit einem Verweis auf eine bestehende Position zu speichern.

So, hier kommt die Komplikation. Wir haben ein Bedürfnis, die Beziehung zwischen den beiden Einheiten zu ändern. Nun kann die Person hat einen Verweis auf viele Standorte.

Person.Locations wird eine IList sein

Meine Frage ist, wie bekommen Sie die Standardbinder Modell Auswahl von einer Mehrfachauswahl Dropdown-Liste zu nehmen und eine IList zu füllen.

Ich habe es geschaffen Sammlungen von Entitäten in der Vergangenheit mit der Syntax [index] .PropertyName als explaing von Phil Haacked .... http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx .

Das Problem hier ist, dass ich nur eine Dropdown-Liste haben, und es wird eine sich wiederholende Schlüssel mit verschiedenen Werten der Modelbinder Post zurück:

Person.Location.Id: 2
Person.Location.Id: 4
Person.Location.Id: 5

Dies ist leider nicht funktioniert. die Standortliste hält zurück Null kommen.

Unser UI Typ wird mit einem glatten JQuery pluggin die Elemente in der Auswahlliste angezeigt werden, so würde ich lieber nicht eine andere Benutzeroberfläche verwenden.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Ein Vorschlag:

Ändern Sie den Namen der Liste Artikel auf „Orte“ und dann in der Aktionsmethode, umfassen einen Parameter string[] locations

Wenn MVC richtig die Namen übereinstimmen können, sollten Sie eine Reihe von ausgewählten Artikel erhalten. Sie können dann mit der Aktualisierung der Datenbank mit den entsprechenden Einsätzen und Löschungen manuell behandeln.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top