В моем приложении MVC есть список, в котором рядом с каждой записью отображается флажок:
<% For Each item In Model%>
<%=Html.CheckBox("Selected", item.select_flag, New With {.onclick = "this.form.submit();"})%>
<%=Html.Hidden("ID", item.id)%>
<%=item.name%>
<br/>
<% Next%>
Как вы можете сказать из onclick, я отправляю форму каждый раз, когда пользователь нажимает флажок. В контроллере мое почтовое действие выглядит так:
<AcceptVerbs(HttpVerbs.Post)> _
Function List(ByVal Selected() As Boolean, ByVal ID() As String) As ActionResult
For i = 0 To ID.Count - 1
If Selected(i) Then
[use ID(i) to update a database row]
End If
Next
Return View(GetTheListOfNamesAndIds())
End Function
Таким образом, я получаю массив выбранных значений и идентификаторов после каждого щелчка по флажку. Я предполагал, что они будут соответствовать, но я обнаружил, что два массива по какой-то причине не синхронизированы. Кроме того, излишне обрабатывать весь список каждый раз при нажатии на флажок, поэтому я хотел бы вернуться ко всей этой настройке.
Каков наилучший способ настроить это так, чтобы при установке флажка обновлялась определенная строка базы данных? Можно ли это сделать без перезагрузки списка каждый раз?