Я хочу, чтобы пользователь обновил несколько строк одновременно, поэтому я создал такую форму (я вырезал 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
.