1

이것이 작동하지 않는 이유를 알 수 없습니다. 내가 읽은 모든 것은 (여기에서 그리고 웹을 통해) 편집을 위해 목록에 바인딩하는 방법이지만 아무런 성공도 얻지 못했다고합니다. I는 두 가지 문제가있다 : 인덱싱되지 않는 뷰 방출목록을 편집하기위한 MVC 모델 바인딩이 작동하지 않습니다.

  1. HTML 폼 요소 (각각은 "수량"및 "BoxID"대신 "[0] .Qty"및 "라는 [0] .BoxID "). 이 subjuct에서 읽은 모든 것은 HTML.EditorFor 및 HiddenFor 도우미가 자동으로 선택해야한다고 말합니다.

  2. 정확한 HTML (올바른 이름의 양식 요소)을 출력하기 위해 뷰를 수동으로 변경하는 경우에도 모델 바인딩이 올바르게 수행되지 않고 컨트롤러 동작 메서드의 컬렉션 매개 변수가 null입니다.

아이디어가 있으십니까? 내가 뭔가 잘못하고 있는거야? 여기

뷰입니다 :

@ModelType IEnumerable(of HonorBox) 
@Code 
ViewData("Title") = "Index" 
End Code 

<h2>Index</h2> 

@Html.BeginForm("Index", "HonorBoxes") 
@Html.AntiForgeryToken() 


@For x = 0 To Model.Count - 1 
    @<tr> 
     <td> 
      @Html.DisplayFor(Function(i) Model(x).BoxID) 
      @Html.HiddenFor(Function(i) Model(x).BoxID) 
     </td> 
     <td> 
      @Html.TextBoxFor(Function(i) Model(x).Qty) 
      @Html.ValidationMessageFor(Function(i) Model(x).Qty) 
     </td> 
    </tr> 
Next 

그리고 이러한 컨트롤러 방법은 다음과 같습니다

Function Index() As ActionResult 
     Dim hb = From h In db.honorBoxes Select h Where Not h.Filled And Not h.Hold 
     Return View(hb.ToList()) 
    End Function 

    <HttpPost> 
    Function Index(boxes As IEnumerable(Of HonorBox)) As ActionResult 
     If ModelState.IsValid Then 
      For Each box In boxes 
       Dim cbox = db.honorBoxes.Find(box.BoxID) 
       If Not IsDBNull(box.Qty) AndAlso cbox.Qty <> box.Qty Then 
        cbox.Qty = box.Qty 
        cbox.Filled = True 
       End If 
      Next 
      db.SaveChanges() 
     End If 
     Return RedirectToAction("Index") 
    End Function 

모델 바인더를 데리러 마지막으로 여기 모델

Public Class HonorBox 
    <Key> Public Property BoxID As Integer 
    Public Property AssetID As Nullable(Of Integer) 
    Public Property Asset As Asset 
    Public Property BoxType As String 
    Public Property Hold As Nullable(Of Boolean) 
    Public Property Filled As Nullable(Of Boolean) 
    Public Property Qty As Nullable(Of Integer) 
End Class 

답변

1

을 위해서입니다 모델 유형은 이 아닌 IEnumerable이어야합니다.

작동이에 변경 :

@ModelType List(of HonorBox) 
+0

감사합니다! 그거였다. –

+0

@ roger-hicks probs 없음. :) – hutchonoid