Как пересчитать массив форм - PullRequest
0 голосов
/ 17 февраля 2012

Я хочу, чтобы пользователь обновил несколько строк одновременно, поэтому я создал такую ​​форму (я вырезал HTML, чтобы показать, что я на самом деле имею в виду):

@using(Html.BeginForm()) {

    @{int i = 0; }
    @foreach(var row in Model) {
        @Html.TextBox("Customer["+ i +"].CustomerID")
        @Html.TextBox("Customer["+ i +"].Name")
    }

    <input type="submit" />
}

Вывод в HTML (для 3 строк):

<input type="text" name="Customer[0].CustomerID" />
<input type="text" name="Customer[0].Name" />

<input type="text" name="Customer[1].CustomerID" />
<input type="text" name="Customer[1].Name" />

<input type="text" name="Customer[2].CustomerID" />
<input type="text" name="Customer[2].Name" />

Когда пользователь нажимает кнопку отправки, данные отправляются в контроллер:

Public ActionResult EditCustomer(IEnumerable<Customer> Customer) {
}

Что дает мне хороший IEnumerable со всеми введенными данными, и я могу делать все, что захочу. Работает как положено.

Теперь я хотел бы сделать еще один шаг вперед и позволить пользователю удалять строки.

Это не удалось

Потому что, когда я удаляю вторую строку, массив больше не «закрывается»: он переходит от Customer [0] к Customer [2], и в ASP.NET MVC возникают проблемы с этим.

Так что я думаю, что это можно решить с помощью пересчета индексов. Но как мне это сделать в jQuery?

Чтобы после удаления среднего ряда была запущена функция, которая обновляет Customer[2].CustomerID до Customer[1].CustomerID.

1 Ответ

1 голос
/ 17 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...