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
Другие вопросы по тегам