Я не могу понять, почему это не сработает. Все, что я прочитал (как здесь, так и через Интернет), говорит, что это связано с списком для редактирования, но я не добился успеха. У меня есть две проблемы:Ссылка на модель MVC для редактирования списка не работает
HTML-элементы формы, испускаемые зрения не индексируются (каждый из них называется «Кол-во» и «BoxID» вместо «[0] .Qty» и «[0] .BoxID "). Все, что я читал на этом субгиганте, говорит, что помощники HTML.EditorFor и HiddenFor должны автоматически подбирать это.
Даже когда я вручную изменяю представление, чтобы вытолкнуть правильный HTML (элементы формы с правильными именами), привязка к модели не выполняется правильно, а параметр коллекции в методе действия контроллера равен нулю.
Любые идеи? Я делаю что-то неправильно?
Вот вид:
@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
Спасибо! Вот и все. –
@ roger-hicks no probs. :) – hutchonoid