2009-04-03 15 views
1

Fortsetzung von this Frage, ich habe ein Formular mit allen Fahrzeugen für eine Person aufgelistet, die Fahrzeugfelder sind bearbeitbar, und sie sind jetzt erfolgreich wieder auf meine Aktion speichern .ASP.NET MVC mit UpdateModel, um Kind Datensätze

Jetzt möchte ich UpdateModel verwenden, um die Daten zu speichern, aber ich bin mir nicht sicher, wie ich es konstruiere. Hier ist meine Save Aktion jetzt:

<ActionName("Edit"), AcceptVerbs(HttpVerbs.Post)> _ 
Function Save(ByVal form As Person, ByVal vehicles() As Vehicle) As ActionResult 
    Dim original = From v In MyDataContext.Vehicles Where v.person_id = Person.person_id 
    For Each item In original 
     For i = 0 To vehicles.Count - 1 
      If vehicles(i).vehicle_id = item.vehicle_id Then 
       UpdateModel(item, New String() {"license_nbr", "color"}) 
       Exit For 
      End If 
     Next 
    Next 
    MyDataContext.SubmitChanges() 
    Return RedirectToAction("Index", "Home") 
End Function 

Als ich das laufen, es hat nichts zu retten, und Update keine Fehler werfen. Ich gehe davon aus, dass ich ein wenig mehr Richtung geben muss, damit die Magie funktioniert, denn UpdateModel weiß nicht, welches Element im Fahrzeug-Array für jedes Update verwendet wird.

Muss ich ein ValueProviderResult als dritten Parameter zu UpdateModel angeben? Wenn ja, wie erstelle ich ein Fahrzeug (i)? Bin ich völlig daneben, wie ich das aufgebaut habe?

Antwort

3

Warum UpdateModel - das aktualisiert nur die Eigenschaften aus Formularfeldern - wenn Sie bereits die Formularfelder zu Modelldaten verarbeitet haben? Können Sie nicht einfach die Werte von vehicle bis item direkt zuweisen?

+0

Ich könnte das definitiv tun, aber können Sie dieses Argument gegen UpdateModel nicht auf der ganzen Linie machen? Nicht streiten für oder dagegen, nur lernen. – gfrizzle

+0

Normalerweise würde ich UpdateModel verwenden, wenn keine Modellbindung verwendet wird, d. H. Es gibt keine Parameter oder nur einen ID-Parameter für die Methode, und ich bekomme die Werte über UpdateModel direkt vom ValueProvider. Für den Fall, dass Sie bereits ein gebundenes Modell haben, ist es nicht sinnvoll, UpdateModel zu verwenden. – tvanfosson

Verwandte Themen