Как лучше всего реагировать на щелчки флажка в представлении списка MVC?

У меня есть представление списка в моем приложении 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

Итак, я получаю массив выбранных значений и идентификаторов после каждого щелчка флажка. Я предполагал, что они будут соответствовать, но я обнаружил, что два массива по какой-то причине не синхронизированы. Также слишком много обрабатывать весь список каждый раз, когда щелкается флажок, поэтому я хотел бы пересмотреть всю эту настройку.

Каков наилучший способ настроить это так, чтобы установка флажка обновляла определенную строку базы данных? Можно ли это сделать без перезагрузки списка каждый раз?


person gfrizzle    schedule 25.03.2009    source источник


Ответы (1)


Подумайте о том, чтобы обернуть каждую «строку» в свою собственную AjaxForm или использовать jQuery для обновления через AJAX, а затем передать данные, необходимые для действия, через значения маршрута (или значения формы) в AJAX get/post. AjaxForm захочет обновить какой-либо элемент DOM с новым содержимым, но вы можете обойти это, обновив сообщение об ошибке (ничего, если есть успех), а не фактическую строку, и выполняя любые локальные изменения через javascript. С jQuery AJAX у вас есть гораздо больше вариантов того, как вы хотите это обрабатывать, но вам, возможно, придется реализовать больше кода на стороне клиента.

person tvanfosson    schedule 25.03.2009