2009-04-03 4 views
1

계속 하시겠습니까? this 질문부터, 모든 차량이 Person에 대해 나열된 양식이 있고 차량 필드를 편집 할 수 있으며 이제 내 저장 작업에 다시 게시됩니다. .UpdateModel을 사용하여 하위 레코드를 게시하는 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를 지정해야합니까? 그렇다면 어떻게 차량 중 하나를 만들 수 있습니까? 나는 이걸 어떻게 셋업 했는가?

답변

3

양식 필드가 이미 모델 데이터로 처리되어있는 경우 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 
+0

나는 확실히 할 수 있지만, 전체적으로 UpdateModel에 대해 그 논쟁을 할 수는 없습니까? 반대하거나 반대하는, 그냥 배우기. – gfrizzle

+0

일반적으로 모델 바인딩을 사용하지 않을 때 UpdateModel을 사용할 것입니다. 즉, 매개 변수가 없거나 메서드에 대한 id 매개 변수 만 있으며 ValueProvider에서 UpdateModel을 통해 값을 직접 가져옵니다. 바운드 모델이 이미있는 경우 UpdateModel을 사용하는 것이 타당하지 않을 것이라고 생각합니다. – tvanfosson