Asp.net mvc ASP.NET MVC使用UpdateModel发布子记录

Asp.net mvc ASP.NET MVC使用UpdateModel发布子记录,asp.net-mvc,model-view-controller,post,updatemodel,Asp.net Mvc,Model View Controller,Post,Updatemodel,从问题继续,我得到了一个表格,其中列出了一个人的所有车辆,车辆字段是可编辑的,它们现在正成功地发回我的保存操作 现在我想使用UpdateModel来保存数据,但我不确定如何构造它。以下是我现在的保存操作: <ActionName("Edit"), AcceptVerbs(HttpVerbs.Post)> _ Function Save(ByVal form As Person, ByVal vehicles() As Vehicle) As ActionResult Dim

从问题继续,我得到了一个表格,其中列出了一个人的所有车辆,车辆字段是可编辑的,它们现在正成功地发回我的保存操作

现在我想使用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
_
函数Save(ByVal form As Person,ByVal vehicles()As Vehicle)作为ActionResult
Dim original=来自MyDataContext.Vehicles中的v,其中v.person\u id=person.person\u id
原件中的每一项
对于i=0的车辆,计数为-1
如果车辆(i).vehicle\u id=item.vehicle\u id,则
UpdateModel(项,新字符串(){“许可证”\u nbr,“颜色”})
退出
如果结束
下一个
下一个
MyDataContext.SubmitChanges()
返回重定向操作(“索引”、“主目录”)
端函数
当我运行它时,它不会保存任何内容,并且UpdateModel不会抛出任何错误。我假设我必须给它多一点方向,才能让魔法发挥作用,因为UpdateModel不知道每次更新都要使用vehicles数组中的哪个项

是否需要将ValueProviderResult指定为UpdateModel的第三个参数?如果是,如何从车辆(I)中创建一个?我的设置方式是否完全不正确?

为什么要使用UpdateModel——它只更新表单字段中的属性——而您已经将表单字段处理为模型数据了?您不能直接将
车辆
中的值分配给
项目

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

我当然可以这么做,但是你不能全面反对UpdateModel吗?不赞成也不反对,只是学习。通常我会在不使用模型绑定时使用UpdateModel,即方法没有参数或只有一个id参数,我通过UpdateModel直接从ValueProvider获取值。在已经有绑定模型的情况下,我认为使用UpdateModel没有意义。