如何重新计算表单数组

时间:2012-02-17 13:16:14

标签: jquery asp.net-mvc-3

我希望用户一次更新多行,所以我创建了一个这样的表单(我删除了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" />

当用户单击提交按钮时,数据将发送到Controller:

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

这给了我一个很好的IEnumerable所有输入的数据,我可以做任何我想做的事情。它按预期工作。

现在我想更进一步,让用户删除行。

此操作失败

因为当我删除第二行时,数组不再“关闭”:它从Customer [0]转到Customer [2],ASP.NET MVC也有问题。

所以我认为可以通过重新计算索引来解决。但是我如何在jQuery中执行此操作?

因此,在删除中间行之后,会运行一个将Customer[2].CustomerID更新为Customer[1].CustomerID的函数。

1 个答案:

答案 0 :(得分:1)

我会向你推荐following article,它说明了一个很好的助手,你可以用来实现它,而不是使用魔术字符串。