ASP.NET MVC использует UpdateModel для публикации дочерних записей
Продолжая этот вопрос, я получил форму со всеми транспортными средствами, перечисленными для человека, поля транспортных средств доступны для редактирования, и теперь они успешно отправляют обратно в мое действие Сохранить.
Теперь я хотел бы использовать UpdateModel для сохранения данных, но я не уверен, как его построить. Вот мое действие Сохранить сейчас:
<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
Когда я запускаю это, он ничего не сохраняет, а UpdateModel не выдает никаких ошибок. Я предполагаю, что мне нужно дать ему немного больше направления, чтобы заставить магию работать, потому что UpdateModel не знает, какой элемент в массиве транспортных средств использовать для каждого обновления.
Нужно ли указывать ValueProviderResult в качестве третьего параметра для UpdateModel? Если так, как я могу создать один из транспортных средств (I)? Я совершенно не в курсе, как мне это настроить?
1 ответ
Зачем использовать UpdateModel - который просто обновляет свойства из полей формы - если у вас уже есть поля формы, обработанные в данные модели? Вы не можете просто присвоить значения из vehicle
в item
напрямую?
For Each item In original
For i = 0 To vehicles.Count - 1
If vehicles(i).vehicle_id = item.vehicle_id Then
item.license_nbr = vehicles(i).license_nbr
item.color = vehicles(i).color
Exit For
End If
Next
Next